C/Visual C - Leer un fichero

 
Vista:

Leer un fichero

Publicado por GuileF (6 intervenciones) el 31/01/2004 16:19:27
hola

quiero leer un fichero que contiene palabras separadas por un salto de linea nada mas ej:

palabra1
palabra2
palabra3

y hago esto

int main(int argc, char *argv[])
{
FILE *fichero;
fichero = fopen("Archivocomandos.txt", "r" );
char *palabra[20];

while (!feof(fichero))
{
fscanf (fichero,"%s\n",palabra);
printf ("%s",palabra);
getch();
}
}

pero al final del bucle sigue escribiendo la ultima palabra todas las veces que aprieto una tecla, y no sale del programa, como hago para que termine??.Graccias.
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:Leer un fichero

Publicado por s (3 intervenciones) el 01/02/2004 05:10:21
Hola.

No tengo un compilador de c a la mano y por lo tanto lo que te voy a decir son aproximaciones que pueden fallar. Probablemente no llegas nunca al fin de archivo ya que siempre esperas leer una cadena con salto de linea, lo que podria evitar leer el simbolo de fin de archivo, con lo cual terminaria el ciclo.
Te recomiendo probar lo siguiente:
while ( fscanf(fichero, "%s\n", palabra) == 1)
{
printf ("%s",palabra);
getch();
}
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:Leer un fichero

Publicado por s (3 intervenciones) el 01/02/2004 05:14:45
Hola.

No tengo un compilador de c a la mano y por lo tanto lo que te voy a decir son aproximaciones que pueden fallar. Probablemente no llegas nunca al fin de archivo ya que siempre esperas leer una cadena con salto de linea, lo que podria evitar leer el simbolo de fin de archivo, con lo cual terminaria el ciclo.
Te recomiendo probar lo siguiente:
while ( fscanf(fichero, "%s\n", palabra) == 1)
{
printf ("%s",palabra);
getch();
}

fscanf te devuelve el numero de elementos de entrada asignados. Por lo tanto, al terminar de leer el archivo ya no se podrán asignar elementos y fallará fscanf.

Un último detalle. Bajo Windows y MS-DOS los saltos de linea comprenden dos caracteres: \r\n(retorno de carro y salto de linea). Así que asegurate que si estas leyendo archivos hechos en las plataformas antes citadas incluyas ambos caracteres en tu lectura.

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