为什么这段代码导致无限循环?

时间:2015-01-20 16:10:07

标签: c

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


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

为什么这段代码导致无限循环。它来自D.Ritchie的书。

2 个答案:

答案 0 :(得分:2)

导致无限循环,因为EOF不是可以通过键盘输入的字符。

看看这个:EOF in Windows command prompt doesn't terminate input stream

答案 1 :(得分:0)

在阅读答案的最后部分后,在 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

您可以在输出中看到引用字符EOF的最后一行,其数值等于-1

作为备注EOF是一个带有值-1的符号常量,您可以在头文件stdio.h中看到它的定义

#define EOF (-1)