例如:str == "abcdefg",如果substr == "cde",那么删除子串后为abfg 返回1
如果substr 在str中不出现,返回0
函数原型int del_substr(char *str, char const *substr);
要求:a.不能使用任何用于操纵字符串的库函数
b.不能使用任何下表引用
#include<stdio.h>
#include<assert.h>
int del_substr(char *str, char const *substr)
{
assert(str);
assert(substr);
int count = 0;
char *cp = str;
char *cp1 = NULL;
const char *subcp = substr;
while (*cp)
{
if (*cp == *subcp)
{
cp1 = cp;
cp++;
subcp++;
count++;
}
else
{
cp++;
subcp = substr;
}
if (*(subcp) == '\0')
{
while (*cp1)
{
*(cp1 - count) = *(++cp1);
}
return 1;
}
}
return 0;
}
int main()
{
int ret = 0;
char str[] = "abcdefg";
ret = del_substr(str, "cde");
printf("%d,%s", ret, str);
system("pause");
return 0;
}
本文介绍了一个用C语言实现的删除字符串中指定子串的算法。该算法不使用任何标准库函数,并避免直接使用下标引用的方式进行操作。通过遍历源字符串并逐字符比较目标子串来实现子串的定位与移除。文章提供了完整的源代码示例及测试案例。

被折叠的 条评论
为什么被折叠?



