我正在尝试实现一个函数,用于使用 memmove 从字符串中删除子字符串。打印结果时,似乎我没有正确移动子字符串,即使看起来我在源字符串中使用了正确的位置。我的功能是:
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;
}
例如,我的输出是:如果发送字符串“please remove rem remove rem999”,我会返回:“please ove rm ovmove re 999”
谢谢!