我有一個空的終止和動態分配的字符串,稱爲'text_buff',其中包含單詞「酒吧」。我想用我選擇的另一個詞代替這個詞,它可以比原來的詞更長或更短。替換字符串中的單個字
這是我的代碼直到現在,我似乎無法弄清楚我做錯了什麼。
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];
}
}
以何種方式它不工作? –
@KlasLindbäck它只是純粹的錯誤。這個代碼只是我在試圖解決問題時想到的方向。它只在5個char字符串上工作,但除此之外,它開始覆蓋text_buff中的其他單詞。 – michel9501
我正在尋找一個適當的解決方案來替換字符串中的單詞。 – michel9501