El nif y el nombre son variables tipo char. Antes tenía el salario como char también y sólo me valía de la función gets, funcionaba todo perfecto. El problema surge cuando tomo la variable char como un entero o un float y uso la función fscanf. Todo se va al traste y el escaneo es erróneo, en campos que no corresponden de la estructura.
El fragmento de código que creo que me da problemas es el siguiente:
Muchas gracias de antemano.
Código:
Resuelto con un fgetc():while(feof(fp)==0 && n<LNX){ fgets(tb[n].nif,LNX,fp); fgets(tb[n].nome,LNX,fp); fscanf(fp,"%d",&tb[n].salario); tb[n].nif[strlen(tb[n].nif)-2]='\0'; tb[n].nome[strlen(tb[n].nome)-2]='\0'; printf("%s\n",tb[n].nome); n++; }
Código:
while(feof(fp)==0 && n<LNX){ fgets(tb[n].nif,LNX,fp); fgets(tb[n].nome,LNX,fp); fscanf(fp,"%d",&tb[n].salario); fgetc(fp); tb[n].nif[strlen(tb[n].nif)-2]='\0'; tb[n].nome[strlen(tb[n].nome)-2]='\0'; printf("%s\n",tb[n].nome); n++; }