elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: (TUTORIAL) Aprende a emular Sentinel Dongle By Yapis


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Cargar Lista de un fichero con fseek a una lista auxiliar en el programa.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Cargar Lista de un fichero con fseek a una lista auxiliar en el programa.  (Leído 1,991 veces)
samur88

Desconectado Desconectado

Mensajes: 125


Ver Perfil
Cargar Lista de un fichero con fseek a una lista auxiliar en el programa.
« en: 9 Mayo 2011, 17:34 pm »

Hola buenas.

Tengo el siguiente problema que no consigo resolver y por mas que busco en el foro y en Internet no encuentro la forma de solucionarlo.

Tengo una lista en un fichero que previamente he insertado con fwrite, lo que quiero hacer es leer la lista de ese fichero con fseek y cargarla en una lista auxiliar para que el programa trabaje con ella (por ejemplo insertar datos) luego volvere a escribir el fichero entero y cada vez que quiera escribir en esa lista, la cargare en una auxiliar y trabajare con ella para volverla a guardar en el programa.

La función que he hecho para esto, es la siguiente:


Código
  1. medicos * read_fic(void){
  2. FILE *fp;
  3. medicos *aux,aux2,*first;
  4. fp = fopen("medicos.bin","r+b");
  5. fseek (fp, 0L, SEEK_SET);
  6. first = NULL;
  7.  
  8. do{
  9.   fread(&aux2,sizeof(medicos),1,fp);
  10.   aux = (medicos *)malloc(sizeof(medicos));
  11.  
  12.   if(first == NULL){first = aux;}
  13.   aux->dni = aux2.dni;
  14.   aux->fecha = aux2.fecha;
  15.   strcpy(aux->nombre,aux2.nombre);
  16.   strcpy(aux->apellidos,aux2.apellidos);
  17.  
  18.   /* sacar datos de una estructura dentro de una lista dentro de un fichero */
  19.  
  20.   strcpy(aux->direccion.calle,aux2.direccion.calle);
  21.   aux->direccion.bloque = aux2.direccion.bloque;
  22.   aux->direccion.numero = aux2.direccion.numero;
  23.  
  24.   aux->next = aux2.next;
  25.   /*
  26.    printf("#%d \t Fecha: %d",aux->dni, aux->fecha);
  27.    printf("\t#N: %s \t A: %s\t",aux->nombre, aux->apellidos);
  28.    printf("Calle: %s\n",aux->direccion.calle);
  29.    
  30.    
  31.    */
  32.   aux = aux->next;
  33.  }while(!feof(fp)); // (aux2.next != NULL);
  34.  
  35. fclose(fp);
  36. return first;
  37. }


El main quedaría así:
Código
  1. int main(){
  2.    medicos *primero;
  3.    primero = NULL;
  4.  
  5.   primero = read_fic();
  6. }

Pero esta función me da fallos de segmentación por todos lados, a parte de que estoy usando un puntero local a la función, por lo tanto el valor de aux se debería perder cuando retorne first que es un puntero al primer elemento de dicha lista, como resolvería este problema sin usar variables globales (por ejemplo haciendo que aux2 sea global).
De todas formas puede que tenga mas fallos a parte de ese, la función con la que cargo los datos del fichero en la lista.

Un saludo.


En línea

samur88

Desconectado Desconectado

Mensajes: 125


Ver Perfil
Re: Cargar Lista de un fichero con fseek a una lista auxiliar en el programa.
« Respuesta #1 en: 12 Mayo 2011, 23:25 pm »

Solucionado. Disculpen las molestias.


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema para pasar una lista a fichero con Fwrite « 1 2 »
Programación C/C++
samur88 12 5,577 Último mensaje 21 Febrero 2011, 01:06 am
por samur88
Duda con SQL al cargar datos en una lista
Bases de Datos
GhostLT 2 2,458 Último mensaje 24 Febrero 2011, 20:43 pm
por GhostLT
Ayuda fseek ó ftell
Programación C/C++
estivinho 1 1,359 Último mensaje 25 Octubre 2012, 13:20 pm
por ecfisa
LibreOffice 4.0 lista para desembarcar en tu escritorio
Noticias
wolfbcn 0 789 Último mensaje 7 Febrero 2013, 22:15 pm
por wolfbcn
cargar de un fichero y pasarlo a una lista enlazada en C????
Programación C/C++
jessec01 1 1,061 Último mensaje 17 Octubre 2016, 05:31 am
por dato000
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines