【求助】 删除字符串中的子串 ——做这个题时遇到的问题
我弄了一下午了,希望各位能给我看看是为什么,谢谢!原题是我们学校的pta上的
这里是我找到的博客,文字上看是同一个题http://
另附上原题图片:
程序代码:
#include <stdio.h>
#include <string.h>
#define N 101
int main()
{
int i, del_len, s_len;
char s[N] = {},*p_s = &s[0];
char del[N] = {};
gets(s);
gets(del);
s_len = strlen(s);
del_len = strlen(del);
for (p_s = strstr(s, del); p_s != NULL; p_s = strstr(s, del))
{
for (i = p_s - s; i < /*strlen(s)*/s_len - del_len + 1; i++)//问题一:用此行的注释【取代】后面的s_len为什么会出现 段错误(经调试是 越界了)?
{
s[i] = s[i + del_len];
s_len = strlen(s);
}
//strcpy(p_s, p_s + del_len);//问题二:用此处的语句【取代】上方的for循环,区别在哪?
memset(s + strlen(s), 0, del_len);
}
printf("%s\n", s);
return 0;
}
/*
问题一的测试样例请用这个
输入样例:
Tomcat
Tomcat
输出样例:
(空行)
*/
[此贴子已经被作者于2016-12-15 23:03编辑过]


