Я читал о поведении наборов сканеров. Изучая и тестируя, я столкнулся с проблемой.
Не scanf()
с набором сканирования [^\n]
ведет себя так же, как если бы не было этого набора сканирования?
scanf()
потребляет символы до тех пор, пока символ пробела, такой как символ \n
, не будет найден в stdin
. Таким образом, результат должен быть точно таким же, независимо от того, включил ли я отрицаемый набор сканирования [\ n] или нет.
Например:
char str[100];
scanf("%99[^\n]s", str);
По сравнению с:
char str[100];
scanf("%99s",str);
ПРИМЕЧАНИЕ : Это всего лишь пример того, что я хочу спросить. Пожалуйста, не отклоняйтесь только от самого вопроса, если есть проблема с этим выражением.
Итак, мои вопросы:
Это не поведението же самое, потому что scanf()
пропускает пропущенные символы пробела, такие как символ новой строки по умолчанию?
Почему я должен реализовывать набор сканирования [^\n]
внутри одного scanf()
выражениякогда это уже так обрабатывается по умолчанию?
Большое спасибо.