Почему я не позволяю мне вводить значение для char с помощью scanf ()? - PullRequest
0 голосов
/ 16 февраля 2019

Почему это не позволяет мне вводить символ в переменную внутри функции.У меня точно такая же вещь в другой функции, и у меня нет проблем с этой.

Это та, которая работает

char anotherOne='s';
while(anotherOne=='s'){
    printf("\nWould you like to continue?");
    scanf("%s", &anotherOne);
}

Затем у меня есть эта в другой функции, которая являетсятот, который не работает

char op='s';
while(op=='s'){
    printf("next(s) o prev(a)?");
    scanf("%s", &op);
}

Во втором, когда я пишу символ и нажимаю, введите его, просто остановите и выйдите из выполнения.

У меня есть больше кода между обоими примерами, ноЯ попытался написать их так, как показано, и случилось то же самое.

1 Ответ

0 голосов
/ 16 февраля 2019

Спецификатор формата "%s" ожидает указатель на массив символов, а не адрес одиночного char - но, поскольку массивы затухают в указателях при передаче в функцию, scanf не знает разницы ипытается записать всю строку в &anotherOne, что является неопределенным поведением, поскольку вы не знаете, что будет перезаписано в памяти вашего процесса или системы.

Что вам нужно сделать, это использовать спецификатор формата"%c" вместо этого, если вы хотите прочитать один символ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...