【发布时间】:2014-06-21 20:02:40
【问题描述】:
这是从一个字符串中删除字符的代码,比如 p,它们在另一个字符串中,比如 s,最后连接两个字符串并打印最终的字符串。
例如:如果输入是
stringP=“你好” StringS=“同学”
输出:Hfellow
另一个EX
输入 stringP = "安卓" StringS="谷歌"
输出
安卓谷歌
字符的比较区分大小写。
目前我在输入第一个字符串后出现分段错误。谁能帮我纠正这个代码?以及为什么会出现分段错误,发生在哪些场景?
提前致谢。
#include <stdio.h>
#include<string.h>
void remove_char(int *len, char *string1);
int main()
{
char *p,*s,*t;
int len1,len2,i,j;
printf("enter the two strings\n");
scanf("%s",p);
scanf("%s",s);
len1=strlen(p);
len2=strlen(s);
for(i=0;i<len1;i++)
{
for(j=0;j<len2;j++)
{
if(*p==*(s+j))
{
remove_char(&len1,p);
}
if(*p=='\0'||*(s+j)=='\0')
{
break;
}
}
p++;
}
strcat(p,s);
strcat(t,p);
printf("%s",t);
return 0;
}
void remove_char(int *len, char* string1)
{
int a;
for(a=0;a<*len;a++)
{
*string1=*(string1+1);
string1++;
}
len--;
}
【问题讨论】:
-
char *p,*s;...scanf("%s",p);scanf("%s",s);: 没有确保存储字符串的区域。 -
remove_char(&len1,p);:len1不是p的长度。 -
答案只能是“C”吗?
-
如果你愿意,你可以使用 strpbrk 来简化你的代码。