Страницы

Поиск по вопросам

вторник, 25 февраля 2020 г.

Необязательный параметр scanf

#c


Хочу сделать в программу интерфейс. Чтобы писали например "push 982" и в массив попадало
982. Но также хочу реализовать команды: pop и break. Но считывание в бесконечном цикле
я произвожу таким образом: 
scanf("%s %d", &cmd, &num);

cmd - сама команда, num - число. И из-за этого формата человеку приходится писать
"pop 0" или "break 0". Так как формат введёный в scanf требует пробел и число, иначе
не воспринимает. 
Можно ли как-нибудь сделать ,чтобы num - был необязательным и чтобы если пишешь слово
без числа, оно всё равно бы считывалось? 
Или это реализовывать можно только посимвольным считыванием? (тогда это не стоит
того)    


Ответы

Ответ 1



scanf("%s", &cmd); if (!strcmp(cmd, "push") { scanf("%d", &num); ... } else {...} не канает?

Ответ 2



Вам поможет "Подавление ввода". Если коротко, то поставьте звездочку между процентом и спецификатором формата, это заставит scanf считать, но никуда не присваивать. scanf("%*s %d", &int_num);

Комментариев нет:

Отправить комментарий