簡體   English   中英

為什么這段代碼會導致無限循環?

[英]Why this code is resulting in an infinite loop?

#include<stdio.h>
main()
{
    int c;
    c=getchar();


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

為什么這段代碼會導致無限循環。 它來自 D.Ritchie 的書。

這會導致無限循環,因為EOF不是可以通過鍵盤輸入的字符。

看看這個: Windows 命令提示符中的 EOF 不會終止輸入流

閱讀完我的答案的最后一部分后,在Linux 中執行此代碼;)

#include <stdio.h>

int main(void)
{
    int c;
    c=getchar();

    while(c!=EOF)
    {
        putchar(c);
        c=getchar();
    }
    printf("\n %c  %d \n",c,c);

    return 0;
}

如果你想輸入EOF字符,你可以從鍵盤上按 Ctrl + d ,這是文件的結尾

您可以看到輸出中的最后一行,它引用了數值等於-1的字符EOF

注意EOF是一個值為-1的符號常量,你可以在頭文件stdio.h看到它的定義

#define EOF (-1)

暫無
暫無

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

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