Возможно ли переполнение буфера, если написать scanf("%20s", &buf)? - C (СИ)

Узнай цену своей работы

Формулировка задачи:

20 спасает? Нужно ли дополнительно проверять ввод?

Решение задачи: «Возможно ли переполнение буфера, если написать scanf("%20s", &buf)?»

textual
Листинг программы
char buf[21];
scanf("%20s", buf); // буфер не переполнится, даже если ввести >20 символов (лишние будут отброшены)

Объяснение кода листинга программы

  1. Объявляется массив символов buf с размером 21.
  2. Вводится строка с помощью функции scanf.
  3. Форматный спецификатор %20s указывает на то, что нужно ввести максимум 20 символов.
  4. Функция scanf сохраняет введенные символы в буфере buf.
  5. Если введено больше 20 символов, то они будут отброшены.
  6. Буфер не переполнится, так как размер буфера (21) больше, чем количество символов, которые могут быть введены (обычно до 20).
  7. Значения, введенные пользователем, будут сохранены в буфере buf.

Оцени полезность:

10   голосов , оценка 4.1 из 5
Похожие ответы