簡體   English   中英

為什么代碼不將任何內容打印為輸出?

[英]Why code is not printing anything as output?

在按Ctrl + D后,我希望此代碼可以打印數組,但是它什么也沒做。

#include<stdio.h>

int main(){
    int k,i=0,a;
    int b[10];
    while(scanf("%d",&a)!=EOF){
        if(a>(a/4+a/3+a/2))
        b[i]=a;
        else
        b[i]=(a/4+a/3+a/2);
        i++;
    }
    for(k=0;k<=i;k++){
        printf("%d\n",b[k]);
    }
    return 0;
}

您使用錯誤的組合鍵在操作系統(Windows 8)上生成EOF。 Ctrl + D在類似Unix的系統上很常見,但是Windows系統通常使用Ctrl + Z。

請注意,如果您不在空白行中,則可能必須兩次使用Ctrl + Z (一次刷新當前輸入行,一次生成EOF)。

最佳猜測-您輸入的不是數字,因此scanf返回0,並且程序進入無限循環。 由於您不顯示輸入內容,因此無法分辨。

如果希望它停止在非數字輸入上,請將循環更改為while(scanf("%d",&a) > 0)

您應該檢查文檔以獲取scanf的返回值...它返回掃描的項目數,0、1、2等...不是EOF

暫無
暫無

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

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