您的位置:首页 > 编程语言

《C和指针》章节后编程练习解答参考——6.2

2015-11-15 17:03 381 查看
《C和指针》——6.2

题目:

  编写一个函数,删除源字符串中含有的子字符串部分。

函数原型:

  int del_substr(char *str, char const *substr);

解答代码:

#include <stdio.h>

int del_substr(char *str, char const *substr)
{
if ((*str != NULL) && (*substr != NULL))
{
for(; *str != '\0'; str++)
{
if (*str == *substr)
{
int i=0;
while ((*(str+i) != '\0') && (*(substr+i) != '\0'))
{
if (*(str+i) == *(substr+i))
{
i++;    //保持两个字符串指针同时加1
}
else
break;
}

if ((*(substr+i) == '\0'))    //子字符串检测结束
{
for(; *(str+i) != '\0'; str++)
{
*str = *(str+i);
}
*str = '\0';    //将源字符串后边的字符舍弃
return 1;
}
else
{
return 0;
}
}
}
}
return 0;
}

int main()
{
char source[] = "ABCDEFGHIJKLMN";
char subsource[] = "DEF";

printf("%s\n", source);
printf("%s\n", subsource);

if (del_substr(source, subsource) == 1)
{
printf("Delete the substr:\n");
printf("%s", source);
}
else
printf("Have not found the substr!");

getchar();
return 0;
}


注:

1、应先判断源字符串中是否包含子字符串,检测时要保持两个指针增量同步。

2、子字符串对比完后判断是否包含于源字符串。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: