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
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.
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
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;
}