程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c-小程序的小問題,求大神進來看看

c-小程序的小問題,求大神進來看看

編輯:編程綜合問答
小程序的小問題,求大神進來看看

圖片說明

為什麼循環的退出條件只有在單獨輸入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。

qq_27183003
qq_27183003
SuzumiyaSAMA
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved