C 为什么在这段代码中会出现分段转储错误?
我是c语言的新手,在第一个printf语句之后,我得到了分段转储错误。 请帮我解决这个错误C 为什么在这段代码中会出现分段转储错误?,c,C,我是c语言的新手,在第一个printf语句之后,我得到了分段转储错误。 请帮我解决这个错误 void main() { char string[10]={}; char key,used[10]; int len=0; printf("Enter the string :"); scanf("%s",&string); len = strlen(string); for (int i =0; i<len;++i) { int count=0;
void main()
{
char string[10]={};
char key,used[10];
int len=0;
printf("Enter the string :");
scanf("%s",&string);
len = strlen(string);
for (int i =0; i<len;++i)
{
int count=0;
key =string[i];
printf("%s",key);
for (int j =0;j<len;++j)
{
if (string[j]==key)
{
count+=1;
}
}
printf("%s %d",key,count);
}
}
void main()
{
字符字符串[10]={};
字符键,使用[10];
int len=0;
printf(“输入字符串:”);
scanf(“%s”,字符串(&s);
len=strlen(字符串);
注释中提到的(int i=0;i)
scanf(“%s”,字符串);
应该是scanf(“%s”,字符串);
使用正确的格式说明符
printf(“%s”,key);
应该是注释中提到的printf(“%c”,key);//
scanf(“%s”,字符串);
应该是scanf(“%s”,字符串);
使用正确的格式说明符
printf(“%s”,key);
应该是printf(“%c”,key);/printf(“%s”,key);
应该是printf(“%c”,key);
%s
需要以null结尾的char*
,但您正在传递char
。养成考虑编译器警告的好习惯。这里char key不是数组。使用key[size]。除了注意编译器警告之外(如果您没有注意,则其设置不够高,需要提高),请相信我的话;作为C语言的新手,您根本无法很快学会如何使用调试器。越快越好。在软件工程生涯中,您将很容易花费一半的时间使用调试器。printf(“%s%d”,key,count)
也是错误的。key
是char
,而不是char[]
scanf(“%s”,&string);
应该是scanf(“%s”,string);
原因如下:printf(“%s”,key);
应该是printf(“%c”,key);
%s
需要以null结尾的char*
但是你正在传递char
。养成考虑编译器警告的好习惯。这里char key不是数组。使用key[size]。除了注意编译器警告之外(如果您没有注意,则其设置不够高,需要提高),相信我的话;作为C语言的新手,你根本不可能很快学会如何使用调试器。越快越好。在软件工程生涯中,你很容易会花费一半的时间使用调试器。printf(“%s%d”,key,count)
也是错误的。key
是char
,而不是char[]
scanf%s“,&string);
应该是scanf(“%s”,string);
原因如下: