Ctrl-D соответствует целочисленному буквальному символу '\4'
в C, потому что A = 1, B = 2, C = 3, D = 4.
Ваш скриншот показывает, что вы программируете на Windows, поэтому то, что вы читаете о том, что Ctrl-D , такой же, как EOF
, не применимо (это Unix / Linux / Ma c).
Чтобы исправить вещи, вам нужно прочитать до '\4'
(или просто 4; они эквивалентны):
while ((ch = getchar()) != '\4')
{
message[i] = ch;
i++;
}
Обратите внимание, что вам все равно нужно будет нажать Enter или Возвращает ключ для строки текста, которая будет принята. Это означает, что вы можете набрать hello world^D what? i can still type?
перед нажатием Введите , чтобы отправить текст в вашу программу. Однако ваша программа прекратит чтение с символа ^D
, в результате чего будет напечатано сообщение hello world .
В будущем вы можете использовать что-то вроде printf("%d %c\n", message[i], message[i]);
в al oop чтобы распечатать список значений байтов, которые вы прочитали.