Я бег этого примера (из Керниган и Ритчи книжного раздела 1.5.2 C) на машину терминале Mac OS X:CTRL-D на Mac терминале выводит D символ
#include <stdio.h>
int main()
{
int c, nl;
nl = 0;
while((c = getchar()) != EOF)
if(c == '\n')
++nl;
printf("%d\n", nl);
}
я запустить приложение и введите символ EOF CTRL-D
немедленно. Программа выводит 0D
и заканчивается. 0 - ожидаемый результат, но откуда берется дополнительная «D»?
Я видел this thread и this faq, но не смог найти ответа.
С другой стороны, я не знаю, нормально ли * для терминала печатать '^ D'. Я не помню, чтобы это видели в других Unices. –
Вместо того, чтобы спать, @Anand может просто начать свой формат printf с \ n, чтобы убедиться, что вывод начинается на новой строке. –