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