Я хочу взять один символ ввода, который вводит пользователь, а затем распечатать его с помощью методов printf() и fgets() (все это часть большей программы, но это изолированная проблема).Использование fgets() для размещения символа в массиве создает автоматический ввод?
include <stdio.h>
include <stdlib.h>
char input[1];
int main(){
printf("Please enter the minimum value the random number can be: ");
fgets(input, sizeof(input), stdin);
printf("\n%c", input[0]);
}
Как я ожидаю, что приведенный выше код для работы
Я думаю, что было бы распечатать сообщение Е(), а затем ждать ввода от пользователя. Независимо от того, что они набрали, я ожидал, что он возьмет первый символ этого ввода и снова распечатает его обратно на одну строку вниз.
Как приведенный выше код на самом деле работает
Программа печатает заявление начального Е(), а затем печатает пустую строку снизу, а затем программа завершается.
Почему в мире это? Почему код отвечает таким образом, а не как я ожидаю?
Прочтите [руководство пользователя] (http://pubs.opengroup.org/onlinepubs/009695399/functions/fgets.html). – user2357112
'fgets (buffer, size, file)' читает не более 'size-1' байт. Вот почему. – DyZ
Строки в C/C++ заканчиваются нулем, поэтому 'fgets' хотел бы иметь место как для строки, так и для завершения нулевого символа. 1 символа достаточно, чтобы соответствовать только нулевому символу. – yeputons