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

Problema con contador de palabras

Estas en el tema de Problema con contador de palabras en el foro de C/C++ en Foros del Web. Buenas, antes de nada un saludo, este es mi primer mensaje en el foro. Voy a ello. Tengo este programa en C que deberia contar ...
  #1 (permalink)  
Antiguo 08/06/2012, 12:14
 
Fecha de Ingreso: junio-2012
Mensajes: 1
Antigüedad: 11 años, 10 meses
Puntos: 0
Problema con contador de palabras

Buenas, antes de nada un saludo, este es mi primer mensaje en el foro.

Voy a ello. Tengo este programa en C que deberia contar cuántas palabras hay dentro de un fichero, pero no me funciona:


#include <stdio.h>

int main()
{
int count = 0;
FILE *f;
char s;

f=fopen("sortida.txt","r");

while ((s = fgetc(f)) != EOF)
{

if ((s = fgetc(f)) != ' ')
count++;

fclose(f);
printf ("\n%d palabras en el fichero sortida.txt.\n", count);

return 0;
}
}


¿Alguna idea de qué le sucede?

Gracias de antemano.
  #2 (permalink)  
Antiguo 08/06/2012, 14:12
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años
Puntos: 344
Respuesta: Problema con contador de palabras

Lo que quieres contar son palabras o letras. Lo que tu intentas hacer es contar letras (aunque el código también este mal).

Para contar palabras sería algo así, aunque podría mejorarse para leer linea a linea y no caracter a caracter.

Código C:
Ver original
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5. int count = 0;
  6. FILE *f;
  7. char s;
  8. int leidoCaracterAnterior = 0;
  9.  
  10. f=fopen("prueba.txt","r");
  11.  
  12. while ((s = fgetc(f)) != EOF)
  13. {  
  14. if ((s == ' ' || s == '\n') && leidoCaracterAnterior){
  15. count++;
  16. leidoCaracterAnterior = 0;
  17. }
  18. else
  19.     if (s != ' ' && s != '\n')
  20.     leidoCaracterAnterior = 1;
  21. }
  22.  
  23. if (leidoCaracterAnterior)
  24. count++;
  25.  
  26. fclose(f);
  27. printf ("\n%d palabras en el fichero sortida.txt.\n", count);
  28. getc(stdin);
  29. return 0;
  30. }

El primer error que tienes es que el bucle while está mal cerrado. Tienes que cerrarlo antes de cerrar el fichero con fclose.

El segundo es que lees en cada pasada del bucle dos caracteres en vez de uno a uno y el primero de ellos no lo utilizas excepto para mirar si es final de fichero.

El último problema es el que te he dicho arriba, que estabas intentando contar el número de letras, no de palabras.

Espero que te sirva y saludos.

Etiquetas: contador, funcion, int, palabras, programa
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 01:27.