C/Visual C - feof y fscanf

 
Vista:

feof y fscanf

Publicado por vetus (6 intervenciones) el 06/03/2006 20:20:26
Tengo lo siguiente:

FILE* fichEntrada;
char palabra[50];

// Abrimos fichero de entrada para lectura
fichEntrada = fopen ("entrada.txt","r");
if (fichEntrada==NULL){
printf("Cliente: Error al abrir el fichero de entrada\n");
exit(1);
}


while (!feof(fichEntrada)){

fscanf(fichEntrada,"%s",palabra);
printf("%s\n",palabra);

}

La idea es que en el fichero entrada.txt tengo palabras (una palabra por linea) y quiero obtener todas las palabras. El problema con ese código es que la última palabra del fichero me la escribe 2 veces y todavia no entiendo la razón. Alguna idea? (No uso fgets porque no quiero que me coja el salto de linea del final, quiero la palabra tal cual)
Graciasss
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:feof y fscanf

Publicado por Nelek (816 intervenciones) el 09/03/2006 12:04:14
No estoy seguro, pero creo que tu problema se debe al bucle.

Con los while, do... while y tal siempre hay problemas con la veracidad de las clausulas y repeticion de los controles. Normalmente se ejecutan como minimo una vez, o como te pasa a ti ahora, se repite la ultima.

Has probado a hacerlo con un for? yo los prefiero personalmente porque puedes determinar donde empiezas y donde acabas exactamente, luego dentro pones la condicion del while: if (blabla) haz X, else break. Lo malo en tu ejemplo es determinar el maximo de repeticiones
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

fscanf

Publicado por Kimera (1 intervención) el 09/07/2006 06:11:52
no creo que te sirva, pero a lo mejor otra persona tiene la misma duda,
fscanf retorna un 1 o un -1 cuando es fin de archivo

while (!feof(fichEntrada)){

x = fscanf(fichEntrada,"%s",palabra);

if( x !=-1)
printf("%s\n",palabra);

ojala les sirva
:)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:feof y fscanf

Publicado por diego (2 intervenciones) el 12/03/2007 16:12:54
tenes que hacer:

FILE* fichEntrada;
char palabra[50];

// Abrimos fichero de entrada para lectura
fichEntrada = fopen ("entrada.txt","r");
if (fichEntrada==NULL){
printf("Cliente: Error al abrir el fichero de entrada\n");
exit(1);
}

fscanf(fichEntrada,"%s",palabra);
printf("%s\n",palabra);

while (!feof(fichEntrada))
{
fscanf(fichEntrada,"%s",palabra);
printf("%s\n",palabra);
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar