PROBLEMA CON FICHEROS :V

Iniciado por CHETO1234, 2 Enero 2016, 06:45 AM

0 Miembros y 1 Visitante están viendo este tema.

CHETO1234

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


#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

ivancea96

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:
if(ch == ' ' && i > 0 && ch != ' ')
Cómo podría ser ch igual a ' ' y a la vez diferente a ' '? Replantea la condición.

furciorifa

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

lfgmespino

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;

}