• Miércoles 6 de Noviembre de 2024, 02:38

Autor Tema:  Ayuda Con El Codigo Es De Ficheros, Listas En C  (Leído 830 veces)

i82maria

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Ayuda Con El Codigo Es De Ficheros, Listas En C
« en: Martes 13 de Diciembre de 2005, 14:58 »
0
Hola a todos el codigo es este.
[CODE]
La funcion que me piden, qes que dado el nombre del fichero como parametro, y un entero, cree dos listas, una que contenta solo los apellidos y otra que contenga solo los dni. Si el entero es 1, la lista contendra solo los apellidos, y si el entero es 2 la lista contendra solo los dnis. uego me pide que devuelva la cabeza al programa principal.

#include <stdio.h>
#include <malloc.h>
#include <string.h>

struct datos{
   char ape1[15];
   char DNI[10];
   int edad;
  };

struct lista1 {
    char ape1[15];
     struct lista1 *sig;
    };

struct lista2 {
    char DNI[10];
    struct lista2 *sig;
 };


 void *pasarFichero(char *fichero, int n){
  {
     FILE *pf;
     struct datos d;
     struct lista *cabeza1 = NULL;
     struct lista *cabeza2 = NULL;
     struct lista *aux1 = NULL;
      struct lista *aux2 = NULL;
     if((pf = fopen(fichero, "rb"))==NULL){
         printf("Error de memoria\n");
    exit(-1);
   }
   while(fread(&d, sizeof(struct datos),1, pf) == 1) {
      if(n==1){
         aux1 = (struct lista1*)malloc(sizeof(struct lista1));
         strcpy(aux->ape1, d.ape1);
         if(cabeza1 ==NULL){
          cabeza1 = aux1;  
          }
          else{
                aux1->sig = cabeza1;
      cabeza1 = aux1;
      }
      return (cabeza1);
               
         }
       else(n==2){
           aux2 = (struct lista2*)malloc(sizeof(struct lista2));
         strcpy(aux->ape1, d.DNI);
         if(cabeza2 ==NULL){
          cabeza2 = aux2;
         
          }
          else{
                aux2->sig = cabeza2;
      cabeza2 = aux2;
      }
      return(cabeza2);
         }
       }
  }

Por favor, yo hice esta funcion, si hay alguien que sepa como se hace, o que me diga donte te ngo el error. gracuas