Мне было интересно, если fgets()
читает новый символ линии с пользовательского ввода, то есть на клавиатуре. Вот некоторые примеры кода я писал:fgets() Read New Line Char From Keyboard
while (1) {
char userInput[3] = {'\0', '\0', '\0'};
fgets(userInput, 3, stdin);
flushStdin();
printf("%s\n", userInput);
}
Если я типа «2», я reprompted ввести другой символ, и следующий результат:
$ 2
$ 3
2
$
Я понимаю, как fgets()
работа, поэтому возможно, моя логика неверна. Требуемый выход:
$ 2
2
$
Откуда берется '' '? Кажется, что ваш код больше, чем вы показываете. Пожалуйста, предоставьте [mcve]. – kaylum
Я не понимаю ваш вопрос, 'fgets()' читает целую строку или символы '3', если они вставлены первыми. Таким образом, он увядает, читается до '' \ n'' или пока в целевом буфере больше нет места. –
Что такое 'flushStdin()'? Вы [не можете этого сделать] (https://stackoverflow.com/questions/2187474/i-am-not-able-to-flush-stdin), не вызывая неопределенное поведение (например, 'fflush (stdin)') или используя определенную платформу API .. –