Contar el total de repeticiones de una palabra en archivo | Programas en C




Ya había pensado en compartir los programas en C y demás programas en otros lenguajes de programación que me dejaban en la facultad, pero, por alguna razón no lo había hecho.

Les comparto ahora un programa en C, que cuenta el total de repeticiones de una palabra dentro de un archivo de texto.

Aquí el código:

#include <stdio.h>#include <string.h>#include <ctype.h> #define MAXCHAR 1000 int main() { FILE *fp; char cad_arch[MAXCHAR]; char* nom_archivo = "prueba.txt"; char cad_buscar[30], palabra_extraida[20]; int i = 0, j = 0, contador = 0; printf("Ingresa la palabra a buscar: "); scanf("%s", cad_buscar); fp = fopen(nom_archivo, "r"); if (fp == NULL){ printf("No se puede abrir el archivo %s", nom_archivo); return 1; } printf("ntt--- Contenido del archivo ---nn"); while (fgets(cad_arch, MAXCHAR, fp) != NULL){ printf("%s", cad_arch); for (i = 0; i < strlen(cad_arch); i++){ while (i < strlen(cad_arch) && !isspace(cad_arch[i]) && isalnum(cad_arch[i])){ palabra_extraida[j++] = cad_arch[i++]; } if(j != 0){ palabra_extraida[j] = ''; if (strcmp(palabra_extraida, cad_buscar) == 0){ contador++; } j = 0; } } } printf("nTotal de coincidencias: %dn", contador); fclose(fp); return 0; }

Se usan funciones básicas de las librerías para cadenas y comparaciones.

El archivo puede contener este tipo de palabras y oraciones:

.hola hola .hola hola .hola hola -hola hola holis, adios, no, lo, hola hola
1, 1, 2, 3 hola
.hola h
fin hola
-hola,
-hola,
hol
holamundo
-hola, mundo

El archivo de ejemplo, se busca la palabra hola, y es posible contarla incluso, si hay comas, puntos, guiones o algún otro caracter especial.

La imagen es un ejemplo de ejecución.

Comentarios:

@