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

Lo he cambiado. El programa funciona correctamente pero en este tramo, al capturar el salario, la primera cifra del mismo desaparece. Supongo que se debe al z=getc(fp) del principio, al no ser el salario un vector pero no sé cómo arreglarlo. Gracias por contestar!

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