Qué les parece este ejercicio que me tocó hacer? Tienen alguna mejora?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
/** Algoritmo que cuenta la cantidad de cadenas
dentro de otra cadena **/
typedef unsigned int ui;
ui cuenta_str(const char *, const char *);
int main()
{
char *cadena = "¿MUNDO? MUNDO, SOY EL DIOS DEL MUNDO, MUNDO DOMINARE";
char *subcad = "MUNDO";
ui cuenta = cuenta_str(cadena, subcad);
printf("La cantidad de veces que %s se repite en %s es: %d", subcad, cadena, cuenta);
return 0;
}
ui cuenta_str(const char *s1, const char *s2)
{
const char *delim = " ,.!¡¿?/-";
char *aux = malloc(sizeof(char) * strlen(s1) + 1);
char *token_Ptr;
ui cnt = 0;
if(s1 == NULL)
return 0;
strcpy(aux, s1);
token_Ptr = strtok(aux, delim);
while(token_Ptr != NULL)
{
if(strcmp(token_Ptr, s2) == 0)
cnt++;
token_Ptr = strtok(NULL, delim);
}
return cnt;
}
Debería liberar la memoria de aux cierto?
EDITADO: Debería también contar MUNDO en la cadena "MUNDOROLA"? creen que sea necesario? Digamos que asumí que cadena = palabra :P