Tengo una estructura llamada datos, que contiene los campos, dni, apellidos, y edad. Creo un fichero que tenga esos campos. Y ahora tengo que creear una lista con los apellidos, y otra con los dnis. Si alguien me puede ayudar, estoy desesperada. Gracias
Esto es lo que yo llevo hecho hasta ahora.
[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 lista *sig;
    };
struct lista2 {
    char DNI[10];
    struct lista2 *sig;
 }; 
  */  
struct datos introducirDatos();
void anyadirRegistro(struct datos d, char *fichero);
void verFichero(char *fichero); 
main()
{
 FILE *p;
 char fichero[20];
 char resp;
  struct datos d;
  int n;    
  printf("\nIntroduzca el nombre del fichero que desee: ");
  gets(fichero);
  fflush(stdin);      
/*   struct actores *v;
   v = (struct actores *) malloc(sizeof(struct actores);*/
 do{ 
  d = introducirDatos(); 
  printf("¿Desea introducir un estudiante mas: ");
  scanf("%s", &resp);
  fflush(stdin);  
  }while(resp == 's' || resp == 'S');
   anyadirRegistro(d, fichero);  
/verFichero(fichero);
 } 
struct datos introducirDatos()
{
  struct datos aux;
   printf("Apellido1: ");
    gets(aux.ape1);
    printf("DNI: "),
    gets(aux.DNI);
    printf("Edad: ");
    scanf("%d", &aux.edad);
    getchar();
    fflush(stdin);
 return (aux);
 } 
void anyadirRegistro(struct datos d, char *fichero)
{
  FILE *fp;
 fp = fopen(fichero, "ab");  
  fwrite(&d, sizeof(struct datos),1, fp);
  fclose(fp);
} 
void verFichero(char *fichero)
  {
    FILE *fp;
    struct datos d;
    fp = fopen(fichero, "rb");
    /*)==NULL) {
        printf("Error al abrir el fichero\n");
   exit(-1);
    }*/
    while(fread(&d, sizeof(struct datos),1 , fp)==1)
    {   
         printf(" %s %s  %d \n", d.ape1, d.DNI, d.edad);
     }
     fclose(fp);
  }
/*