為什麼循環的退出條件只有在單獨輸入EOF的時候才有效?
為什麼前面輸入字符再輸入EOF的話會輸出奇怪的東西(c is't a letter. -1)?
//程序從標准輸入讀取字符,直到遇到文件結尾。程序檢查並報告該字符是否是一個字母。如果是的話,程序還應該報告該字母在字母表中的位置,否則返回-1
#include<stdio.h>
#include<ctype.h>
int main (void)
{
char ch = NULL;
while ((ch = getchar()) != EOF){
if (!isalpha(ch))
printf("%c isn't a lettter. -1\n");
else{
if(isupper(ch))
printf("%c is the %d in the alphabet\n",
ch, ch - 'A' +1);
else
printf("%c is the %d in the alphabet\n",
ch, ch - 'a' +1);
}
}
printf("Done.\n");
return 0;
}
getchar()在你輸入幾個字符後按回車才讀取第一個字符,其余的字符和回車被放到緩沖區,其中ctrl+z以0x1a放入緩沖區的,
再次被getchar讀入時就不是EOF了。
只有在一行的開頭輸入ctrl+z,其他字符+回車,才被getchar在第一次讀入時,返回-1,即oxff,也就是EOF。