[ Foro de C ]

Archivos en C

29-Apr-2013 05:44
dario delgado
1 Respuestas

Ahora tengo problemas con el ejercicio de archivos no se porque se me repite la ultima linea.
este es el ejercicio:
un programa que pida al usuario que teclee frases, y las almacene en el fichero
?frases.txt?. Acabará cuando el usuario pulse Intro sin teclear nada. Después deberá mostrar el contenido del fichero.
este es mi fuente:


#include <stdio.h>
#include <string.h>

int main()
{
	FILE* fichero;
	char frase[50];
		
	fichero=fopen("frases.txt","wt");
	printf("ingrese una frase, para terminar presione enter::");
	gets(frase);
	while (strcmp(frase,"")!=0)
	{
		fputs(frase,fichero);
		fputs("\n",fichero);
		printf("ingrese una frase, para terminar presione enter::");
		gets(frase);
	}
	fclose(fichero);
	
	/*lectura del archivo frases.txt*/
	fichero=fopen("frases.txt","rt");
	do
	{
		fgets(frase,50,fichero);
		puts(frase);
	}
	while (!feof(fichero));
	fclose(fichero);
	return 0;
}



ejecutalo y veras que la ultima linea del archivo leido se repite.
Saludos.


29-Apr-2013 09:42
Nacho Cabanes (+83)

No hace falta ejercutarlo, es un error frecuente.  ;-)

Date cuenta de que lees del fichero,  muestras en pantalla lo que has leído y después es cuando compruebas si has llegado al final del fichero.

Se solucionará si añades un "if" antes de mostrar en pantalla o si usas un "while" en vez de un "do-while".

(Por cierto, si se trata de una duda distinta, crea un hilo distinto, para ayudar a que el foro sea más fácil de seguir).






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)