Dúvida com código C

saunde

Power Member
eu preciso de fazer a função strSubst( char * str, const char *a, const char *b) que, na string str, substitui todas as ocorrências da string a pela string b, retornando o numero de substituições realizadas.
Exemplo:
char s[30]="isto parece simples";
strSubst(s,"parece", "foi") retorna 1 e deixa s com "isto foi simples".


o meu problema é o seguinte a string que lá está é maior que a string que se vai lá pôr neste caso, mas também pode ser maior, como é que eu faço a substituição ? Eu sei que existe a função strstr( char * s1, char * s2) que retorna o apontador para a primeira ocorrência de s2 em s1, se fossem as strings iguais era só substituir a partir do apontador retornado por esta função, assim não sei como fazer, alguém me pode ajudar ?

Obrigado
 
Em pseudo codigo, qualquer coisa deste género:
Código:
char *new = string com tamanho igual a (str - saida + entrada)
char *temp = string com tamanho suficiente (pode ser igual a new)
temp = strstr(str, saida) ;

copia para new (old - temp) chars de old ;
concatena new com entrada ;
concatena new com (temp a partir do tamanho de saida) ;
 
Back
Topo