Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema escanear fichero (C) [RESUELTO]

Estas en el tema de Problema escanear fichero (C) [RESUELTO] en el foro de C/C++ en Foros del Web. Quiero escanear un fichero en una estructura, el cual se compone de un elemento por línea (nif,nombre,salario), cuyo patrón se repite durante el archivo. El ...
  #1 (permalink)  
Antiguo 13/11/2012, 10:43
Avatar de rodrigoemece  
Fecha de Ingreso: septiembre-2011
Mensajes: 68
Antigüedad: 12 años, 8 meses
Puntos: 1
Exclamación Problema escanear fichero (C) [RESUELTO]

Quiero escanear un fichero en una estructura, el cual se compone de un elemento por línea (nif,nombre,salario), cuyo patrón se repite durante el archivo.

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:
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++;      
  }
Resuelto con un fgetc():

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++;      
  }

Última edición por rodrigoemece; 13/11/2012 a las 11:13 Razón: RESUELTO

Etiquetas: escanear, fichero, funcion, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:30.