Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 为什么在这段代码中会出现分段转储错误?_C - Fatal编程技术网

C 为什么在这段代码中会出现分段转储错误?

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;

我是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;
    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);
原因如下: