• Jueves 2 de Mayo de 2024, 08:25

Autor Tema:  Pasar De Ficheros A Listas  (Leído 989 veces)

i82maria

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Pasar De Ficheros A Listas
« en: Lunes 12 de Diciembre de 2005, 20:40 »
0
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);
  }
/*