lunes, 27 de septiembre de 2010

Buscar una palabra en un fichero - Programación C

Continuamos con ejercicios de programación en C en los que trabajamos con ficheros de texto. En esta ocasión, buscaremos una palabra en un fichero, para saber cuantas veces aparece en él.

Ejercicio:
Escribe un programa que pida el nombre de un fichero. El programa abrirá ese fichero y nos pedirá que metamos una palabra a buscar. El programa le dirá al usuario cuantas veces se repite esa palabra.

Para ver la solución sigue leyendo.


/******   Inicio programa ******/


#include <stdio.h>


main()

{

      FILE *Fd;

      char fitxizen[30],palabra[30],texto[80];

      int i,tmp1,tmp2,konta=0;


      printf("Mete el nombre del fichero en el que buscaremos: \n");

      gets(fitxizen);

      printf("Mete la palabra a buscar en ese fichero: \n");

      gets(palabra);


      Fd=fopen(fitxizen,"r");

      if (Fd==NULL)

         printf("Error abriendo el fichero");


      while (feof(Fd)==0)

      {
            fgets(texto,80,Fd);

            for(i=0;i<strlen(texto);i++)

            {

               if (palabra[0]==texto[i])

               {

                  tmp1=0;

                  tmp2=i;

                  while ((palabra[tmp1]==texto[tmp2])&&(tmp2<strlen(texto))&&(tmp1!=strlen(palabra)))

                  {
                        tmp1++;

                        tmp2++;

                        if (tmp1==strlen(palabra))

                           konta++;
                  }
               }
            }
      }

      printf("La palabra se repite en el texto %d veces",konta);

      getchar();

}


/******   Fin programa******/

10 comentarios:

  1. esta muy bueno el post pero aun tiene un problema por ejemplo si quieres buscar la palabra ida no solo te contara las veces que aparece la palabra ida, sino que tambien las palabras que contengan ida por ejemplo si tengo en el archivo vidas idas ida te la contara 3 veces;
    aparte de eso esta muy bueno el post

    ResponderEliminar
  2. Buenas "Anónimo", efectivamente hará lo que comentas. No es un error sino que se ha programado para que haga eso :)

    Saludos.

    ResponderEliminar
  3. DIN DIN!!! ERES MASTER C COMPAYN!!! ME HA VENIDO AL PELO ENGA NO TE FUMES MUCHOS DIMARIAS

    ResponderEliminar
  4. por cierto de falta el fclose para cerrar el fichero compaynnnnn!!

    ResponderEliminar
  5. hahahah está bunísimo pero se te paso declarar la librearía string ya que usas la funcion stdlen y marcará errores de no ser declarada

    ResponderEliminar
  6. muy bueno el ejemplo

    ResponderEliminar
  7. y si no quieres q pase lo q menciona el primer comentario?

    ResponderEliminar
  8. Estoy buscando esto hace banda. Muchisimas gracias

    ResponderEliminar
  9. ¿que quiere decir fgets(texto,80,Fd); ?

    ResponderEliminar

Deja tu opinión realizando un comentario interesante. Cualquier intento de Spam no será admitido.