АП
Анатолий Поляков

Не могу понять как работает scanf(). Си.

char str1[5] = {0};

int a;

scanf("%5s", str1);

scanf("%d", &a);

почему если ввести шесть символов при первом вызове scanf(), то шестой символ лезет в переменную "a".

char str1[5] = {0};

char str2[] = {0};

scanf("%5s", str1);

scanf("%s", str2);

если делать так, то scanf() во второй массив запихивает все, что не влезло в первый массив.

как сделать так, что бы при втором вызове scanf не пихал в переменную или массив символы, которые не влезли в первый массив, а заново считывал символы с клавиатуры?

ВЛ
Вероника Лукьянова

А почему тебе влом почитать описание scanf?
"Команды форматирования могут содержать модификатор максимальной длины поля. Он представляет собой целое число, располагаемое между знаком % и кодом формата, которое ограничивает количество читаемых для всех полей символов. Например, если в переменную address нужно прочитать не более 20 символов, используется следующий оператор.
scanf("%20s", address);
Если входной поток содержит более 20 символов, то при последующем обращении к операции ввода чтение начнется с того места, в котором "остановился" предыдущий вызов функцииscanf(). Если разделитель встретится раньше, чем достигнута максимальная длина поля, ввод данных завершится. В этом случае функция scanf() переходит к чтению следующего поля. "

Венера Палашкина
Венера Палашкина

А куда же они (лишние символы) будут деваться?

Мальвина
Мальвина

Использовать подобные функции не есть хорошо ибо как видишь глюки начинаются) И почему нельзя написать просто scanf("%s", str1); чтобы прога в эту переменную всё запихала?

Похожие вопросы
Ключевое слово printf и scanf
не могу понять почему не работает
программы написанные на си в windows работают в linux
Начал изучать си непонятно ввод и вывод (printf и scanf) как это работает уже не одну статью прочитал
Помогите, пожалуйста, понять и исправить, что в программе не так, язык Си
не могу понять почему алгоритм не работает точно он не заходит в if
Объясните, пожалуйста, почему в visual studio 2013 у меня не работает scanf, если я включаю библиотеку stdio.h ?
как ввести переменную не с помощью cin >>, а с помощью scanf() в с++?
СИ, никак не могу понять ваших путаных обьяснений?
Не могу понять принцип макроса (C++). Как он работает?