Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: CHETO1234 en 2 Enero 2016, 06:45 am



Título: PROBLEMA CON FICHEROS :V
Publicado por: CHETO1234 en 2 Enero 2016, 06:45 am
Necesito que el programa cuente el número de líneas de un fichero (Se le pide la usuario que elija cual fichero), y que cuente el número de palabras PERO SOLO DE LA PRIMER LÍNEA .. Por fa, si alguien me ayuda corrigiéndolo TT. TT lo amaré eternamente xD

Código:
 #include <stdio.h> 
#include <stdlib.h>
 

int main(int argc, char** argv)
{
FILE *archivo;
    int ch, CL, CP,i;
char arch[25];


printf("\nHoli! Dime el nombre archivo, incluyendo formato n.n:\n\n");
gets(arch);
   
 //Para comprobar que exista el archivo :v
    if ((archivo = fopen(arch, "r")) == NULL){
      perror(arch);
      return EXIT_FAILURE;
   }
   
   CL = 0;
   CP = 0;
   while ((ch = fgetc(archivo)) != EOF)
      if (ch == '\n')
         CL++;
         
    for(i = 0; i < ch; i++)
          if(ch == ' ' && i > 0 && ch != '\n')
               CP++;
 
   
   fclose(archivo);
   printf("Numero de lineas en %s: %d\n",arch,CL);
    printf("Cantidad de palabras: %d\n", CP);
   return EXIT_SUCCESS;


}




ignoren los "comentarios" pls :v

El problema es qeu solo cuenta las lineas y las palabras ... se queda en 0 T.T


Título: Re: PROBLEMA CON FICHEROS :V
Publicado por: ivancea96 en 2 Enero 2016, 13:27 pm
Ese bucle while, no sé si es lo que querías, pero cuidado al poner las llaves {} en if y while. Te recomiendo que las pongas.

Luego, esta condición:
Código
  1. if(ch == ' ' && i > 0 && ch != ' ')
Cómo podría ser ch igual a ' ' y a la vez diferente a ' '? Replantea la condición.


Título: Re: PROBLEMA CON FICHEROS :V
Publicado por: furciorifa en 13 Enero 2016, 19:03 pm
Tu error está en el while no le pusiste { } y sigue a la primer línea después de el while y sólamente la primer linea a continuación todo lo demás si lo querías dentro del while ya no se hace repetidamente si no una vez


Título: Re: PROBLEMA CON FICHEROS :V
Publicado por: lfgmespino en 17 Enero 2016, 23:11 pm
Te envío un código que sí funciona. Si solo quieres contar palabras en la primera línea, cambia el segundo if para que compruebe la condición (CP == 1).

#include <stdio.h>
#include <stdlib.h>
 

int main(int argc, char** argv)
{
    FILE *archivo;
    int ch, CL, CP,i;
    char arch[25];
 
 
    //printf("\nHoli! Dime el nombre archivo, incluyendo formato n.n:\n\n");
   // gets(arch);
   
 //Para comprobar que exista el archivo :v
    if ((archivo = fopen("registroPersona.txt", "r")) == NULL){
      perror(arch);
      return EXIT_FAILURE;
      }
   
   CL = 0;
   CP = 0;
   while ((ch = fgetc(archivo)) != EOF) {
      if (ch == '\n')   CL++;
      if(ch == ' ' || ch == '\n')  CP++;
     }
   
   fclose(archivo);
   printf("Numero de lineas en: %d\n",CL);
    printf("Cantidad de palabras: %d\n", CP);
   return EXIT_SUCCESS;

}