Olá,
Resolvi um exercício do livro do Luís Damas (Linguagem C).
O problema é que não entendo a solução apresentada no livro.
O exercício:
char *StrDelStr(char *s1, char *s2)
apaga em s1 a primeira ocorrência de s2.
Exemplo:
char p[] = "O rato roeu a rolha da garrafa de rum do rei da Rússia"
StrDelStr(p, "rum");
puts(p) -> "O rato roeu a rolha da garrafa de do rei da Rússia"
A solução do livro:
char *StrDelStr(char *s1, char *s2)
{
char *loc = strstr(s1,s2);
if (loc != NULL)
strcpy(loc,loc+strlen(s2));
return s1;
}
O retorno de strstr é 'rum do rei da Rússia'.
strcpy copia para dest(loc) um espaço maior
que dest tem. O que entendo que é errado.
E o resultado é o esperado. sem o trecho 'rum'.
Alguém poderia explicar, passo a passo, o procedimento ?
Aqui minha solução. Sem o uso de string.h. Na
correria esqueci de extender o prazo do paste.debian.net.
Posto de novo se necessário.
http://paste.debian.net/405773
Download do arquivo:
http://paste.debian.net/download/405773
Abraço,
Herbert