我試圖實現一個函數,用於從memmove字符串中刪除一個子字符串。 打印結果時,看起來好像我沒有正確移動子字符串,即使它看起來像我在源字符串中使用了正確的位置。 我的功能是:從一個字符串中刪除一個子字符串,使用memmove在C
char * removeSubStr(char * str, const char * substr){
char *scan_p, *temp_p;
int subStrSize = strlen(substr);
if (str == NULL){
return 0;
}
else if (substr == NULL){
return str;
}
else if (strlen(substr)> strlen(str)){
return str;
}
temp_p = str;
while(scan_p = strstr(temp_p,substr)){
temp_p = scan_p + subStrSize;
memmove(scan_p, temp_p, sizeof(temp_p)+1);
}
return str;
}
我的輸出,例如是: 如果發送字符串 「請刪除REM刪除rem999」, 我得到回: 「請奧雅納RM ovmove重999」
謝謝!
(無關您的問題,但你通過'substr'到'strlen'之前,應先試'SUBSTR == NULL'否則,你可能最終調用。 'strlen'在空指針上。) –