簡體   English   中英

c = getchar() != EOF; 打印 0 或 1

[英]c = getchar() != EOF; prints 0 or 1

當我運行此代碼時,它會打印 dos 0 字符(空格)一次,然后放置一個空格並打印 dos 1 字符(笑臉,白眼睛和嘴巴)。

在此處輸入圖片說明

int c = 0, b = 1;
printf("%c %c", c, b);

但是當我在下面運行此代碼時,結果會被打印兩次。 我要么得到 2 個空格,要么得到 2 個笑臉。

在此處輸入圖片說明

while(c != -1)
{
    c = getchar() != EOF;
    putchar(c);
}

編輯:我的代碼沒有括號,因此它將每個輸入的字符與 EOF 進行比較,並將結果(0 或 1)分配給 c,然后將 c 作為字符打印。 為了防止這種情況,我們可以使用括號強制程序先執行 c = getchar() ,然后將該值與 EOF 進行比較。

while((c = getchar()) != EOF)

您的問題是 '\\n' 字符不等於 EOF。 '\\n' 作為第二個字符被讀入。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM