Programación General > C/C++
problema con codigo!
(1/1)
benne:
buenas a todos, mi problema es que yo kiero sacar de un fichero de texto que haya creado yo.. el numero de palabras que hay en dicho texto y tmb el numero de lineas que hay en el texto..
mi codigo es el siguiente: ( no funciona) por eeso vengo aqui a que me ayudeis aber como lo acemos funcionar!
--- Código: C --- int separador (int ch){ return (ch==' ') || (ch=='t') || (ch=='n');} int main (){ FILE * pf; char fichero[100]; long contador_caracteres; long contador_palabras; long contador_lineas; int actual; int prev; pf=fopen ("c:/texto.txt","r+"); // Inicialización de los contadores contador_caracteres = 0; contador_palabras = 0; contador_lineas = 1; // Lectura de los datos de entrada prev = ' '; actual = getchar(); while (pf != EOF) { contador_caracteres ++; // ¿Fin de línea? if (pf=='n') contador_lineas++; // ¿Comienzo de una nueva palabra? if (!separador(pf) && separador(prev)) contador_palabras++; // Siguiente carácter prev = actual; //fichero= getchar(); } // Resultado printf("%ld caracteresn", contador_caracteres); printf("%ld palabrasn", contador_palabras); printf("%ld líneasn", contador_lineas); return 0;}
espero quye me ayudeis es un poko urgente :P
posman:
Por que en las condiciones estas utilizando el descriptor del archivo en lugar del caracter que leiste?
--- Código: Text ---if (pf=='n')...if (!separador(pf) && separador(prev)) No deberias comparar la variable actual?
Hace mucho que no programo en C, pero creo que para obtener un caracter del archivo debes utilizar fgetc
benne:
y como sería :S esque no tengo ni idea..
Vndecid:
Te tiro pseudocodigo
--- Código: C ---char linea 500//suponiendo que como maximo la linea tiene 500 caracteres si no vas a tener que contar de a uno .... while(fgets(linea,500,archivo)!=EOF){ cuentalinea++; cuentaletras+=strlength(linea);}
y arrivederchi!
benne:
me aprece que lo e puesto bien el codigo pero me sigue sin ir aber si me ayudais :S
--- Código: C --- int main (){ FILE * pf; char arr[100]; char linea [5000]; int fin=0; int contador=0; int contador2=0; char * controlador; pf=fopen ("c:/bf2/texto.txt","r+"); while (fin!=EOF) { fin=fscanf(pf,"%s",arr); contador=contador+1; } fseek(pf,0,SEEK_SET); while ( controlador!=NULL) { controlador=fgets(linea,5000,pf); contador2=contador2+1; } printf ("El nº de palabras del fichero es: %d",contador); printf ("El nº de lineas del fichero es: %d",contador2); fclose(pf); return 0;}
Navegación
Ir a la versión completa