一個作業,通過題目給好的函式原型構造功能。但是我寫出來的總有一點問題,能幫忙看看哪里不對嘛
int str_replace(const char* in, char* out, int outlen, const char* oldstr, const char* newstr)
{
int len_in = 0;//原字串指標
int len_out = 0;//現在字串指標
int counts = 0;//替換次數
int len_new = 0;//新字串長度
for (; *(newstr + len_new) != '\0'; len_new++)
;//求新字串長度
char str[outlen];//輸出字串陣列
while (len_out < outlen - 1) {
if (*(in + len_in) == '\0')
break;//原字串指向空的時候結束
if (*(in + len_in) != *oldstr || len_out + len_new >= outlen - 1) {//搜索不到要替換的字串或者輸出長度不允許再被代替
str[len_out] = *(in + len_in);
len_in++;
len_out++;
continue;
} else {
int i;
for (i = 1; *(oldstr + i) != '\0'; i++)
if (*(in + len_in + i) != *(oldstr + i))
break;//判斷接下來的幾個字符是不是匹配
if (*(oldstr + i) == '\0') {//要替換字串被匹配完,可以替換
counts++;
len_in += i;//忽略被替換的部分
for (int j = 0; j < len_new; j++) {
str[len_out++] = *(newstr + j);
}
} else {
str[len_out] = *(in + len_in);
len_in++;
len_out++;
}
}
}
str[len_out] = '\0';
out = str;
return counts;
}
沒辦法給main函式,就是看看傳參后怎么去實作這個功能,回傳替換次數,并修改out指標。我這個寫法可能還面臨超時
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/103055.html
標籤:C語言
上一篇:客戶端連接不了服務器了
下一篇:C語言 猜字游戲
