SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: giskard en Domingo 13 de Octubre de 2002, 00:43

Título: Re: ficheros en borland c++
Publicado por: giskard en Domingo 13 de Octubre de 2002, 00:43
Hola, agradecería que me ayudaran a corregir el error en este código, se
supone que en un archivo tengo un dibujo ascii, y quiero que aparezca cuando
llamo a la función fichero, sí compila sin errores, pero al ejecutar el
programa se queda la pantalla en blanco y no pasa nada, sé que el error se
encuentra dentro de esta función, porque ya probé sin esa función y si corre
bien el programa
esta es la funcion:

void fichero()
{
FILE *fichero;
char letra;
clrscr();
fichero = fopen("dibujo.txt","r");
if (fichero == NULL) cout<<"error en el archivo";
letra = getc(fichero);
while (!feof(fichero));
{
printf("%c",letra);
letra = getc(fichero);
}
if (fclose(fichero)!=0)
printf( "Problemas al cerrar el ficheron" );
getch();
return;
}

saludos
Título: Re: ficheros en borland c++
Publicado por: Ismael en Domingo 20 de Octubre de 2002, 21:31
Es una pena que un vulgar punto y coma te haya causado tantos problemas.
Tienes:

while (!feof(fichero));

y el ; te anula el bucle y no lee el archivo ni imprime nada.
Si lo quitas, va bien.
si quieres algo de archivos en C, mira en
www.geocities.com/ismaelcamararero (http://www.geocities.com/ismaelcamararero)
Saludos    ;)
Título: Re: ficheros en borland c++
Publicado por: giskard en Lunes 21 de Octubre de 2002, 04:33
tienes razón, ese error ya lo habían hecho ver, es un error  que he cometido muchas veces, lo malo es que esta vez el compilador no se dio cuenta y aún así creó el ejecutable.
probare, saludos
Título: ficheros en borland c++
Publicado por: Ismael en Lunes 21 de Octubre de 2002, 13:10
El compilador no tiene porqué darse cuenta de que tu has puesto un ; al final de la instrucción while ya que eso no es ninguna instrucción que genere error.
De hecho se puede emplear un bucle de ese tipo, con ; para generar un determinado efecto, como por ejemplo un delay:
 ...
 long cont=0;
 ...
 while((cont++)<100000000);
ejecuta el bucle, produciendo un retardo.
Salu2  ;)