• Lunes 16 de Diciembre de 2024, 21:33

Autor Tema:  Listas Simples En C  (Leído 1561 veces)

i82maria

  • Miembro MUY activo
  • ***
  • Mensajes: 119
    • Ver Perfil
Listas Simples En C
« en: Jueves 8 de Junio de 2006, 13:35 »
0
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);
         }
       }
  }

Bicholey

  • Moderador
  • ******
  • Mensajes: 1234
    • Ver Perfil
Re: Listas Simples En C
« Respuesta #1 en: Viernes 9 de Junio de 2006, 23:55 »
0
mmmmmmm no podrias ser un poco mas especifica revisar todo el codigo es algo tedioso
[size=109]LOS GATOS SIEMPRE CAEMOS DE PIE !!![/size]


chimps

  • Miembro MUY activo
  • ***
  • Mensajes: 208
    • Ver Perfil
    • http://quiqueq.blogspot.com
Re: Listas Simples En C
« Respuesta #2 en: Sábado 10 de Junio de 2006, 00:47 »
0
donde esta tu funcion mostrarLista() ?

Bicholey

  • Moderador
  • ******
  • Mensajes: 1234
    • Ver Perfil
Re: Listas Simples En C
« Respuesta #3 en: Sábado 10 de Junio de 2006, 07:54 »
0
:whistling:
Es cierto llama varias funciones pero solo veo :
void *pasarFichero(char *fichero, int n)
[size=109]LOS GATOS SIEMPRE CAEMOS DE PIE !!![/size]