c - Segmentation Fault - Could not Access Memory, Kern_Invalid_Address -
im getting error, be???
program received signal exc_bad_access, not access memory. reason: kern_invalid_address @ address: 0x0000000000000000 0x00007fff86703c00 in strlen ()
i ran in gdb , first thing appears. doesnt tell me on line can find error...
on terminal error: segmentation fault
im positive error in area "funcion busqueda" im pasting whole thing can tell me if spot else.
i need find cause segmentation fault!!! beeeee!?
#include<stdio.h> #include<stdlib.h> #include<string.h> #include "clientes.h" int ordena(lista1 *inicio,lista1 *aux,lista1 *nodo,lista1 *aux2); int agrega_cliente(lista1 *inicio, lista1*aux,lista1 *nodo,lista1 *aux2); int busca_cliente(lista1 *inicio, lista1*aux,lista1 *nodo,lista1 *aux2,lista2 *inicioventas,lista2 *auxventas,lista2 *nodoventas,lista2 *aux2ventas); int main(void) { int menu,pops=0; lista1 *inicio, *aux,*nodo, *aux2; inicio=null; aux=inicio; lista2 *inicioventas, *auxventas,*nodoventas, *aux2ventas; inicioventas=null; auxventas=inicioventas; system("clear"); //funcion void carga_datos(); ordena(inicio,aux,nodo,aux2); printf("tienda departamental\n\n\n"); printf("1. agregar un cliente.\n2. agregar una venta.\n3. buscar cliente. \n4. borrar cliente. \n5. borrar una venta. \n6. salir."); printf("\n\nelige una opcion: "); scanf("%d", &menu); switch(menu) { case 1: system("clear"); printf("opcion1\n"); agrega_cliente(inicio,aux,nodo,aux2); break; case 2: system("clear"); printf("opcion2\n"); break; case 3: system("clear"); printf("opcion3\n"); busca_cliente(inicio,aux,nodo,aux2,inicioventas, auxventas, nodoventas, aux2ventas); puts(aux2->nombre); break; case 4: system("clear"); printf("opcion4\n"); break; case 5: system("clear"); printf("opcion5\n"); break; case 6: system("clear"); printf("opcion6\n"); break; } } ////////////////////////////////////////funcion busqueda////////////////////////// int busca_cliente(lista1 *inicio, lista1 *aux,lista1 *nodo,lista1 *aux2,lista2 *inicioventas,lista2 *auxventas,lista2 *nodoventas,lista2 *aux2ventas) { char nombrebusqueda[80]; int numclienteprueba; printf("dame el nombre del cliente buscar\n"); scanf("%s",nombrebusqueda); aux2=aux; while(aux2!=null) { if((strcmp(nombrebusqueda,aux2->nombre))==0) { puts(aux2->nombre); ////////buscamos la venta aux2ventas=auxventas; while(aux2ventas!=null) { numclienteprueba=aux2ventas->num_clienteventas; if(numclienteprueba==aux2ventas->num_clienteventas) { printf("wow"); } aux2ventas=aux2ventas->sigvent; } //////////// } aux2=aux2->sig; } } ////////////////////////////////////////////funcion ordena int ordena(lista1 *inicio, lista1*aux,lista1 *nodo,lista1 *aux2) { char pruebaman[80],probaman[80];//nombres char pruebadireccion[150],probadireccion[150];//direccion int pruebanum_cliente,probanum_cliente;//numero de cliente aux2=aux; strcpy(pruebaman,aux2->nombre); strcpy(pruebadireccion,aux2->direccion); pruebanum_cliente=aux2->num_cliente; aux2=aux2->ant; { strcpy(probaman,aux2->nombre); if(pruebaman[0]<probaman[0]) { strcpy(pruebaman,aux2->nombre); strcpy(pruebadireccion,aux2->direccion); pruebanum_cliente=aux2->num_cliente; aux2=aux2->sig; strcpy(aux2->nombre,probaman); strcpy(aux2->direccion,probadireccion); probanum_cliente=aux2->num_cliente; } strcpy(pruebaman,aux2->nombre); strcpy(pruebadireccion,aux2->direccion); pruebanum_cliente=aux2->num_cliente; aux2=aux2->ant; printf("ciclo\n\n"); } while(aux2!=null); aux2=aux; strcpy(pruebaman,aux2->nombre); aux2=aux2->ant; strcpy(probaman,aux2->nombre); if(pruebaman[0]<probaman[0]) ordena(inicio,aux,nodo,aux2); } /////////////////// ///////////////////////////////////////////////////////agrega cliente int agrega_cliente(lista1 *inicio, lista1*aux,lista1 *nodo,lista1 *aux2) { file *clientes; clientes=fopen("clientes.txt", "a+"); //fseek(clientes, 0l, seek_end); inicio=null; nodo=malloc(sizeof(lista1)); aux=malloc(sizeof(lista1)); if(nodo==null) { printf("no hay memoria\n"); exit(1); } printf("nombre: "); gets(nodo->nombre); printf("direccion: "); gets(nodo->direccion); printf("numero de cliente: "); scanf("%d", &nodo->num_cliente); if(inicio==null) { inicio=nodo; inicio->sig=null; inicio->ant=null; aux=inicio; } else { aux->sig =nodo; nodo->ant=aux; aux=nodo; nodo->sig=null; } nodo=malloc(sizeof(lista1)); aux2=inicio; while(aux2!=null) { fprintf(clientes, "%s\n", aux2->nombre); fprintf(clientes, "%s\n", aux2->direccion); fprintf(clientes, "%d\n", aux2->num_cliente); puts(aux2->nombre); puts(aux2->direccion); aux2=aux2->sig; } aux2=aux; { puts(aux2->nombre); aux2=aux2->ant; } while(aux2!=null); fclose(clientes); } /////////////////////////////////////////////////////
it looks null pointer. when try access memory location 0x0000 means pointer pointing 0x0000 (null).
Comments
Post a Comment