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******/
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;
ResponderEliminaraparte de eso esta muy bueno el post
Buenas "Anónimo", efectivamente hará lo que comentas. No es un error sino que se ha programado para que haga eso :)
ResponderEliminarSaludos.
DIN DIN!!! ERES MASTER C COMPAYN!!! ME HA VENIDO AL PELO ENGA NO TE FUMES MUCHOS DIMARIAS
ResponderEliminarpor cierto de falta el fclose para cerrar el fichero compaynnnnn!!
ResponderEliminarhahahah 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
ResponderEliminarmuy bueno el ejemplo
ResponderEliminary si no quieres q pase lo q menciona el primer comentario?
ResponderEliminarEstoy buscando esto hace banda. Muchisimas gracias
ResponderEliminar¿que quiere decir fgets(texto,80,Fd); ?
ResponderEliminarMuy buen aporte. Te debo una.
ResponderEliminar