fetish 3 Denunciar post Postado Maio 30, 2009 Bom eu estava criando o substr_count para um jogo, mais já aproveitei e criei para C Puro, quem quiser está ai: int substr_count (char* string,char *string2){ int i,h,j = 1; for (i = 0,h = 0;i < strlen(string) && string2[h];i++) if (string[i] == *string2 && string[i] != string[i-strlen(string)]) j++; return j-1; } Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Maio 30, 2009 E o que deveria fazer? Retornar a quantidade de substrings ou o tamanho da substring? A variável h não é incrementada. Isso está certo? Compartilhar este post Link para o post Compartilhar em outros sites
fetish 3 Denunciar post Postado Maio 30, 2009 Sim está certo, pois se incrementada ela dará varios bugs, por isso coloquei return j-1. E ele retorna a quantidade de substring. Exemplo: pintf ("%d",substr_count("Meu Teste","e")); // Retorna 3 Compartilhar este post Link para o post Compartilhar em outros sites
_Isis_ 202 Denunciar post Postado Maio 30, 2009 Beleza.Então vou te dar uma variante: #include <string.h> #include <stdio.h> int main() { char * s1 = "abcdefabcdbc"; char * s2 = "bc"; char *inicio = &s1[0]; int contagem = 0; if (strlen(s2)) { while( (inicio = strstr(s1,inicio) ) { contagem++; inicio = &inicio[strlen(s2)]; } printf("%d\n",contagem); } else puts("String vazia"); return 0; } Compartilhar este post Link para o post Compartilhar em outros sites
fetish 3 Denunciar post Postado Maio 31, 2009 Arrumado, ele apenas estava aceitando caracteres, agora aceita strings :) Compartilhar este post Link para o post Compartilhar em outros sites