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

[0] Índice de Mensajes

Ir a la versión completa