[英]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
不是可以通過鍵盤輸入的字符。
閱讀完我的答案的最后一部分后,在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.