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

¿Donde está el error?

Estas en el tema de ¿Donde está el error? en el foro de C/C++ en Foros del Web. Código: #include<stdio.h> void main() { FILE *f1; char c; int d,i=0; char cad[10]; f1=fopen("1.txt","r"); while(!feof(f1)) { c=fgetc(f1); while(c!='\n') c=fgetc(f1); i++; } printf("%d",i); fclose(f1); } No ...
  #1 (permalink)  
Antiguo 08/02/2007, 20:38
 
Fecha de Ingreso: julio-2006
Mensajes: 99
Antigüedad: 17 años, 9 meses
Puntos: 0
¿Donde está el error?

Código:
#include<stdio.h>
void main()
{

FILE *f1;
char c;
int d,i=0;
char cad[10];
f1=fopen("1.txt","r");

while(!feof(f1))
{
c=fgetc(f1);


while(c!='\n')
c=fgetc(f1);


i++;
}

printf("%d",i);
fclose(f1);
}
No me imprime nada, y se queda colgado, que esta mal?

SAludos.
  #2 (permalink)  
Antiguo 09/02/2007, 06:35
Avatar de DeYoN  
Fecha de Ingreso: febrero-2004
Mensajes: 81
Antigüedad: 20 años, 3 meses
Puntos: 0
Re: ¿Donde está el error?

se te keda dando vueltas en esta bucle, ya que si el primer caracter no es \n no sale del while:

Código:
while(c!='\n')
c=fgetc(f1);
y como no modificas "c" pues todo el rato hace ese bucle

Suerte.
  #3 (permalink)  
Antiguo 09/02/2007, 18:48
 
Fecha de Ingreso: julio-2006
Mensajes: 99
Antigüedad: 17 años, 9 meses
Puntos: 0
Re: ¿Donde está el error?

Claro, pero yo lo que quiero, es que haga ese bucle, es decir, que me lea en la variable caracter 'c', un caracter detras de otro del fichero, hasta que encuentre un caracter '\n', que indicaría el final de la linea, entonces c tomaria en valor '\n', y saldria del bucle, y el contador se incrementaria en 1, no entiendo porque esta mal, como lo hago entonces??

Saludos.
  #4 (permalink)  
Antiguo 13/02/2007, 13:08
 
Fecha de Ingreso: diciembre-2006
Mensajes: 13
Antigüedad: 17 años, 4 meses
Puntos: 1
Re: ¿Donde está el error?

Habían algunas variables que no usabas, y el otro problema era el bucle. Tambien te agregue una verificación (validación) por si acaso tratas de acceder a un fichero inexistente.

Código:
#include<stdio.h>

void main (void)
{
	FILE *f1;
	char c;
	int i=0;

	f1=fopen("1.txt","r");

	if(f1==NULL)
		printf("Error al abrir el fichero\n");
	else
	{
		c=fgetc(f1);

		while(!feof(f1))
		{
			if(c=='\n')
				i++;
			c=fgetc(f1);	
		}

		printf("La cantidad de \\n encontradas son: %d\n",i);
	}
	fclose(f1);
}
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 07:21.