Я пытаюсь работать через «Язык программирования C», и у меня возникают проблемы с printf и символом EOF. Я работаю с терминалом mac и компиляцией с clang.printf printing extra «D» после getchar() call
Выполнение этого кода:
#include <stdio.h>
main()
{
int val;
while ((val = getchar()) != EOF)
printf("%d\n", val);
/*val = 5;*/
/*printf("hi\n");*/
/*printf("%d\n", val);*/
printf("%d\n", val);
}
работает как я хотел бы ожидать, блокирование, пока я не ввести символ, то печать: "*character code*\n10\n"
, для ctrl-d
, который печатает кроме "-1"
затем выходит
После раскомментирован. "val = 5;"
заявление, однако ввод «ctrl-d
» вызывает его печать: "5D"
.
Я испортил его и нашел что печать VAL второй раз (третий прокомментировал заявление) приведет только one "D": "5D\n5"
, и что печать константы перед переменными (вторым прокомментировали заявление) останавливает «D» от появления: "hi\n5\n5".
Я абсолютно не хочу D, и если кто-нибудь сможет объяснить, как его удалить, я был бы очень благодарен.
Этого не должно быть. Каков ваш точный ввод? –
Предложение: 'main()' -> 'int main (void)' –
Не могли бы вы предоставить один ясный пример вашего кода и ожидаемого поведения? Есть некоторые несоответствия между вашим текстом и вашим кодом, из-за чего трудно следовать :) –