Cita:
Iniciado por Goku00_1 pero yo no quiero saber si esta o no esta es palabra
por ejemplo tengo
char p[100]="Hola a todos como esta, Hola denuevo como Hola todos"; // mi cadena
chat p2[100]="hola"; // palabra a busca
resultado
La palabra "hola" esta "3" veces
que no importe si es como mayuscula o minuscula
Sobre lo de "mayusculas-minusculas"... Puedes pasar todo a mayúsculas.
Para hacerlo, un while bastaría (lo de buscar cuántas veces):
Código:
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <malloc.h>
int Contar(char * t1, char * t2)
{
char * p1 = (char *) malloc(strlen(t1)*sizeof(char)+1);
char * p2 = (char *) malloc(strlen(t2)*sizeof(char)+1);
int i;
char * temp = p1;
for(i=0;t1[i]!='\0';i++) p1[i]=toupper(t1[i]); p1[i]='\0';
for(i=0;t2[i]!='\0';i++) p2[i]=toupper(t2[i]); p2[i]='\0';
i=0;
while((temp = strstr(temp,p2))!=NULL) { temp++; i++; }
free(p1);
free(p2);
return i;
}
int main()
{
char p1[100]="hola a todos como esta, Hola de nuevo como Hola todos";
char p2[100]="hOlA";
printf("%i\n",Contar(p1,p2));
return 0;
}
Salida:
3
Como ves, lo que llamabas tú Instru "tan complicado", se reduce a una línea:
Código:
while((temp = strstr(temp,p2))!=NULL) { temp++; i++; }
*** EDITADO ***
Te he "despejado" o "aislado" todo en una función para que la puedas usar sin preocuparte :)