Ver Mensaje Individual
  #2 (permalink)  
Antiguo 08/06/2012, 14:12
alexg88
 
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.