簡體   English   中英

getchar()!= EOF

[英]getchar() != EOF

我正在從C編程語言書中運行以下程序:

#include <stdio.h>
main()
{
  int c;
  while((c=getchar()) != EOF)
    putchar(); 
}

要么

#include<stdio.h>
int main(){
   int c = getchar();
   while(c != EOF){
      putchar(c);
      c = getchar();
   }
}

當我運行該程序時,出現無法解釋的行為。 如果我按以下順序從命令行輸入字符: {'h', 'e', 'l', 'l', 'o', '\\n', '^D'}則得到以下響應打印到屏幕上: hello ,輸入\\n后,一旦輸入^D ,程序便退出。

但是,當我按如下方式更改順序: {'h', 'e', 'l', 'l', 'o', '^D'} ,屏幕上顯示以下響應: hello ,但是程序不會退出。 輸入^D是否應該退出? 我必須再次輸入^D才能退出程序。 否則,僅當我在\\n之后輸入^D后程序才退出。 我不明白為什么無論何時輸入^D ,程序都不會退出。 有什么想法嗎?

我在UNIX系統上運行。

當您鍵入^ D(“傳輸結束”)時,輸入緩沖區將被清空,並且您到目前為止輸入的所有內容都會發送到您的程序中(實際上沒有發送^ D字符)。 它類似於鍵入換行符,但是,在這種情況下,也發送換行符本身。 程序讀取零個字符時,將其輸入視為關閉。 當您鍵入換行符后跟^ D或兩個連續的^ D時,會發生這種情況。

暫無
暫無

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

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