Error Violacion de segmento en programa en c

Iniciado por nohelyma, 25 Junio 2014, 05:17 AM

0 Miembros y 1 Visitante están viendo este tema.

nohelyma

Al compilar me da el error de violacion de segmento, aca esta el programa, no se porque es el error ni donde se encuentra

#include<stdio.h>
#include<stdlib.h>

struct vehiculo{

char nombre[35];
char modelo[20];
char placa[10];
int telefono;

};

int sum=0;

void agregar(struct vehiculo *dir){

printf("Ingrese el nombre del porpietario del vehiculo\n");
scanf("%s", dir[sum].nombre);

printf("Ingrese el modelo del vehiculo\n");
scanf("%s", dir[sum].modelo);

printf("Ingrese la placa del vehiculo\n");
scanf("%s", dir[sum].placa);

printf("Ingrese el numero de telefono del propietario del vehiculo\n");
scanf("%d", &dir[sum].telefono);

sum++;


}


int main(){
struct vehiculo directorio[4];
int op=0;

while(op!=6){
printf("\t\t Directorio de Vehiculos de Meirda\n\n");
printf("1-Añadir una nueva persona al directorio\n");
printf("2-Añadir un nuevo vehiculo a persona existente en el directorio\n");
printf("3-Ver datos de un vehiculo por medio de la placa\n");
printf("4-Ver vehiculos de un mismo propietario\n");
printf("5-Ver todos los datos\n");
printf("6-Salir del sistema\n");
scanf("%d",&op);

switch(op){

case 1:
agregar(directorio);
break;

}

}
return 0;

}

engel lex

cuando publiques código usa las etiquetas GeSHi (arriba de los emoticones a la derecha)

siempre que tengas un error de ese tipo usa el debugger y ejecuta paso a paso hasta donde está el error... a primera vista no veo el error
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

eferion

Al compilar no puede darte violación de segmento. Una violación de segmento se provoca cuando, mediante un puntero, intentas acceder a memoria no válida. Durante la compilación se escribe el programa... y salvo que el compilador tenga errores dudo que de errores de segmentación.

En tal caso el problema lo tienes durante la ejecución de tu programa... así a bote pronto si pulsas 5 veces la opción 1 empezarás a acceder a memoria que no te pertenece, luego no sería de extrañar que ahí esté el origen de tu problema.