#include <stdio.h>
#define NEWLINE '\n'
#define SPACE ' '
int main(void)
{
int ch;
int count = 0;
while((ch = getchar()) != EOF)
{
if(ch != NEWLINE && ch != SPACE)
count++;
}
printf("There are %d characters input\n" , count);
return 0;
}
問:
一切都運行得很好,所以會忽略空格和換行,並輸出輸入到屏幕上的字符數(在這個程序中,我只是將逗號,感嘆號,數字或任何可打印的特殊符號字符,例如&符號作爲字符),當我點擊EOF模擬中的
^z
。但是我輸入這行到程序時出錯了。例如我輸入:
abcdefg^z
,這意味着我在^z
之前和之後輸入一些字符。程序不會終止程序並打印出全部字符,而是繼續詢問輸入。EOF終止字符輸入僅適用於當我在一行上指定
^z
或執行此操作時:^zabvcjdjsjsj
。這是爲什麼發生?
然後,爲什麼^ z不是一個字符,當我把它放在一行中的字符串之後?例如「abcdefg^z」只返回我「輸入7個字符」而不是8個字符後輸入該行之後的^ z。 – caramel1995
@ caramel23:我相信Windows控制檯會忽略它,並且不會將字符傳遞給正在運行的程序。我不知道爲什麼會發生這種情況。 –