Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/11/2012, 18:29
Avatar de rodrigoemece
rodrigoemece
 
Fecha de Ingreso: septiembre-2011
Mensajes: 68
Antigüedad: 13 años, 2 meses
Puntos: 1
Pregunta Problema con bucle para recoger datos de archivo separados por coma (C)

Tengo un problema con este fragmento de código, ya que los datos del archivo no se guardan bien en las estructuras.
El archivo tiene datos con el siguiente formato: en cada línea (nif,nomes,salario).
Gracias y un saludo! :)

Código C:
Ver original
  1. struct traballador{
  2.   char nif[LNX];
  3.   char nome[LNX];
  4.   float salario;
  5.   };
  6.  
  7. main()
  8. {
  9.   int n=0, s, z, m=0, r=0, sin=0, rep=0, i;
  10.   char nif[LNX];
  11.   struct traballador tb[30];  
  12.              FILE *fp;
  13.               fp = fopen("trab.db","r+t");
  14.  
  15.               if(fp==NULL)
  16.                 {
  17.                 printf("Erro na apertura do arquivo.\n");
  18.                 exit(1);
  19.                 }
  20.                 n=0;                
  21.                 while(feof(fp)==0 && n<LNX)
  22.                 {                    
  23.                     z=getc(fp);
  24.                     if(z!=',')
  25.                     {
  26.                        if(m==0)
  27.                         {
  28.                           tb[n].nif[r]=z;
  29.                           r++;
  30.                         }
  31.                         else if(m==1)
  32.                         {
  33.                            tb[n].nome[r]=z;
  34.                            r++;                  
  35.                         }
  36.                         else if(m==2)
  37.                         {
  38.                            fscanf(fp,"%d",&tb[n].salario);
  39.                            z=',';
  40.                         }
  41.                      }
  42.                     if(z==',')
  43.                     {
  44.                         if(m==0) tb[n].nif[r]='\0';
  45.                         else if(m==1) tb[n].nome[r]='\0';
  46.                         else if(m==2) {n++; m=-1;}
  47.                         m++;
  48.                         r=0;
  49.                     }
  50.                   }
  51.                 }