【求助】 删除字符串中的子串 ——做这个题时遇到的问题
我弄了一下午了,希望各位能给我看看是为什么,谢谢!原题是我们学校的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编辑过]