Scanf изменяет несоответствующие соответствующие аргументы? - PullRequest
0 голосов
/ 07 июня 2019

Учитывая следующий код и предполагая, что единственным вводом является буква A, за которой следует новая строка, scanf должен вернуть 0 из-за сбоя сопоставления:

int x;
scanf("%d", &x);

Мой вопрос заключается в том, разрешено ли scanf по закону изменять значение x, даже если ничего во входных данных не соответствует формату% d, если он по-прежнему возвращает 0. Стандарт языка, похоже, не решает эту проблему, поэтому мой первый Такое впечатление, что ответ - нет.

1 Ответ

1 голос
/ 07 июня 2019

Внимательно читая стандартное определение, функция изменяет только указанные значения при успешном сканировании. scanf("%d %d %d", &a, &b, &c) не должен изменять b, если возвращаемое значение меньше 2.

...