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

Popular posts from this blog

objective c - Change font of selected text in UITextView -

php - Accessing POST data in Facebook cavas app -

c# - Getting control value when switching a view as part of a multiview -