[問題] EOF 要輸入兩次

看板C_and_CPP (C/C++)作者 (法蘭克的兩難)時間8年前 (2017/07/15 13:49), 8年前編輯推噓1(106)
留言7則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: Win10, Linux, ...) Win7 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) Dev c++ 問題(Question): 用scanf讀一個整數 在%d前面打一個空格 使用EOF當終止條件 ctrl+z要輸入兩次 while( scanf(" %d", &x) != EOF ){ printf("%d\n", x); } 預期的正確結果(Expected Output): 按一次 ctrl+z 可以結束程式 錯誤結果(Wrong Output): 要按兩次 ctrl+z 會有這個問題 純粹好奇 問題來自 交大開放課程 鄭昌杰老師第二章的講義 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.42.95.188 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1500097799.A.DCE.html ※ 編輯: FFranKK122 (114.42.95.188), 07/15/2017 13:50:49

07/15 21:05, , 1F
愛惜生命遠離dev
07/15 21:05, 1F

07/16 01:27, , 2F
還是可以用啦 但是gcc記得要更新 只是我能不能換
07/16 01:27, 2F

07/16 01:27, , 3F
給我 notepad 我也能打 code XD
07/16 01:27, 3F

07/16 01:28, , 4F
^ 不知道
07/16 01:28, 4F

07/16 07:54, , 5F
scan 我是不知道。但是以一般讀檔而言,eof旗標是必須讀到
07/16 07:54, 5F

07/16 07:54, , 6F
底,再讀一次所產生的。
07/16 07:54, 6F

07/17 11:43, , 7F
在linux環境下有時^D後也要enter 不要管這種小事
07/17 11:43, 7F
文章代碼(AID): #1PQQq7tE (C_and_CPP)
文章代碼(AID): #1PQQq7tE (C_and_CPP)