Почему я получаю ошибку дампа сегментации в этом коде?

Я новичок в 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);
  } 
}
printf("%s",key); должен быть printf("%c",key);. %s ожидает char * с нулевым завершением, но вы передаете char. Выработайте хорошую привычку учитывать предупреждения компилятора.
kiran Biradar 26.10.2018 09:15

Здесь ключ char не является массивом. Используйте ключ [размер].

danglingpointer 26.10.2018 09:16

Помимо внимания к предупреждениям вашего компилятора (если у вас этого не было, его настройки недостаточно высоки и их нужно поднять), просто поверьте мне на слово; будучи новичком в C, вы просто не можете быстро научиться пользоваться отладчиком. Чем скорее, тем лучше. Вы легко потратите половину своего времени на его использование в течение карьеры программиста.

WhozCraig 26.10.2018 09:18
printf("%s %d",key,count) тоже не прав. key - это char, а не char[].
WhozCraig 26.10.2018 09:18
scanf("%s",&string); должен быть scanf("%s",string);, вот почему: stackoverflow.com/questions/5406935/reading-a-string-with-s‌ canf
Tom's 26.10.2018 09:19

Это правильно.

WhozCraig 26.10.2018 09:43
0
6
43
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как упоминалось в комментарии

scanf("%s",&string); должен быть scanf("%s",string);

Используйте correct format specifier

printf("%s",key); должен быть printf("%c",key);//<-----should be %c
printf("%s %d",key,count); должен быть printf("%c %d",key,count);//<-----should be %c

Другие вопросы по теме