найти сертификат на смарт-карту в настоящее время на читателя

Это потому, что вы набираете w, а затем ENTER. Таким образом, на входе есть 2 символа, 'w', а затем новая строка (\n). Последнее приводит к тому, что ветвь else берется на второй итерации.

Обратите внимание, что стандартный вход буферизируется при подключении к терминалу. Если вам нужно немедленно обратиться к персонажам, есть способы сделать это. Подробнее см. В comp.lang.c FAQ («Как я могу прочитать один символ с клавиатуры, не дожидаясь клавиши RETURN? Как я могу остановить отображение символов на экране, re typed? ").

Обратите внимание, что для надежного программирования необходимо проверить возвращаемое значение scanf. Он возвращает количество успешно преобразованных элементов. Как показано, ваш код не обрабатывает случай с конечным файлом правильно, т. Е. Когда пользователь набирает Ctrl-D (при условии, что терминал Unix). Затем scanf возвращает EOF, и преобразование не выполнялось, но вы используете test, как если бы оно содержало значимое значение.

14
задан Panagiotis Giannakis 14 January 2016 в 13:25
поделиться