Hola a todos necesito crear dos listas a partir de un fichero de texto en C.
La funcion recibe como parametro el nombre del fichero y un entero que puede ser o 1 o 2, si es 1, debe contener solo los apellidos y si es 2 los dni.
Pongo aqui abajo el codigo que he hecho para ver si le encuentran algun fallo.
Pq es q solo me muestra una linea por cada lista.
[CODE]
#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;
};
main()
{
char fichero[15];
char resp;
struct datos d;
struct lista1 *cabeza1 = NULL;
struct lista2 *cabeza2 = NULL;
int n;
int opc;
printf("\nIntroduzca el fichero: ");
scanf("%s", fichero);
getchar();
fflush(stdin);
do{
d = introducirDatos();
anyadirAlumnos(d, fichero);
printf("\nDesea introducir un alumno mas : ? ");
scanf("%c", &resp);
getchar();
fflush(stdin);
}while(resp =='s' || resp == 'S');
getchar();
verFichero(fichero);
getchar();
do{
cabeza1 = pasarFichero(fichero, 1);
printf("\nLISTA APELLIDOS\n");
mostrarLista1(cabeza1);
getchar();
cabeza2 = pasarFichero(fichero, 2);
printf("\nLISTA DNI\n");
mostrarLista2(cabeza2);
printf("\nDesea crear otra lista?\n");
scanf("%d", &opc);
}while(opc <2);
}
void *pasarFichero(char *fichero, int n)
{
FILE *pf;
struct datos d;
struct lista1 *cabeza1 = NULL;
struct lista2 *cabeza2 = NULL;
struct lista1 *aux1 = NULL;
struct lista2 *aux2 = NULL;
if((pf = fopen(fichero, "r"))==NULL){
printf("Error de memoria\n");
exit(-1);
}
while(fscanf(pf, "%s %s %d", d.ape1, d.DNI, &d.edad)==3)
{
if(n==1){
aux1 = nuevoElemento1();
strcpy(aux1->ape1, d.ape1);
if(!listaVacia1(cabeza1)){
cabeza1 = aux1;
}
else{
aux1->sig = cabeza1;
cabeza1 = aux1;
}
return (cabeza1);
}
if(n==2){
aux2 = nuevoElemento2();
strcpy(aux2->DNI, d.DNI);
if(!listaVacia2(cabeza2)){
cabeza2 = aux2;
}
else{
aux2->sig = cabeza2;
cabeza2 = aux2;
}
return(cabeza2);
}
}
}