J'ai une chaîne terminée par un caractère nul et dynamiquement appelée 'text_buff', qui contient le mot "bar". Je veux remplacer ce mot par un autre mot de mon choix, qui peut être plus long ou plus court que celui d'origine.remplacer un seul mot dans une chaîne
Voici mon code jusqu'à maintenant, je n'arrive pas à comprendre ce que je fais mal.
char * toswap = "newword";
int diff = strlen(toswap)-strlen("bar");
int wlocation = strstr(text_buff,"bar")-text_buff;
if (diff > 0) {
text_buff = realloc(text_buff,strlen(text_buff)+diff);
for (i=strlen(text_buff) ; i > wlocation+strlen("bar") -1; --i){
text_buff[i+diff] = text_buff[i];
}
for (i = 0 ; i < strlen("bar")+1; ++i){
text_buff[wlocation+i] = toswap[i];
}
} else if (diff < 0){
for (i=wlocation+diff ; i <strlen(text_buff);++i){
text_buff[i]=text_buff[i-diff];
}
for (i = 0 ; i < strlen("bar")+1; ++i){
text_buff[wlocation+i] = toswap[i];
}
}
De quelle façon il ne fonctionne pas? –
@ KlasLindbäck c'est tout simplement faux. ce code est seulement la direction que je pensais en essayant de résoudre le problème. ça fonctionne seulement sur 5 chaines de caractères mais au-delà ça commence à surcharger les autres mots du text_buff. – michel9501
Je cherche une solution appropriée pour remplacer les mots dans une chaîne. – michel9501