Ver Mensaje Individual
  #12 (permalink)  
Antiguo 17/04/2005, 11:05
MaxExtreme
 
Fecha de Ingreso: abril-2005
Mensajes: 3.083
Antigüedad: 19 años, 1 mes
Puntos: 17
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 :)

Última edición por MaxExtreme; 17/04/2005 a las 11:29