簡體   English   中英

C stdin無限讀取文件

[英]C stdin reads file infinitely

我有一個基本的C程序,需要從stdin讀取輸入。 首先,它使用以下命令從輸入文件中讀取

./Program <input

然后循環遍歷,直到沒有更多

while(scanf("%s",command)!=EOF){
    printf("%s\n",command);
}

之后,我需要再次從鍵盤上進行讀取,但是它繼續無限發送以垃圾郵件讀取輸入文件中的最后一行,而不是讓我使用鍵盤進行輸入。

 while(1){

 scanf("%s",command);
 if(!strcasecmp(command,"exit"))
  exitProg();
 else if(!strcasecmp(command,"help"))
  helpMess();
 else
  printf("Command \"%s\" not recognized, use command \"help\" for a list.\n",command);
 }

閱讀scanf文檔 ,特別是有關返回值的部分,摘錄如下:

返回值

成功時,該函數返回成功讀取的項目數。 如果發生匹配失敗,則此計數可以匹配預期的讀數數或更少,甚至零。 如果在輸入數據失敗之前無法成功讀取任何數據,則返回EOF。

您遇到的問題是,一旦文件用完數據,該程序的標准輸入不會恢復到控制終端,而是停留在空文件的末尾。 您的scanf調用無聲地失敗,使command的內容保持不變。 如果您希望能夠同時閱讀兩者,則需要找到另一種處理方式。

您的外殼可能支持此功能。

暫無
暫無

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

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