[問題] 如何在console介面下讀取尚未按下enter的訊息

看板C_and_CPP (C/C++)作者 (emeth)時間16年前 (2009/08/25 17:04), 編輯推噓5(507)
留言12則, 5人參與, 最新討論串1/1
目前碰到一個問題 在對stdin使用fgets fread cin 等函式 都要等到按下enter才能讀取鍵入的資訊 請問有辦法在還沒按下enter之前 就取得keyin的資訊嗎(無論是中文或是英文) -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.70.65.74

08/25 17:10, , 1F
conio.h裡的試試?? 另外想到的就是kbhit()....Orz
08/25 17:10, 1F

08/25 17:20, , 2F
getch()
08/25 17:20, 2F

08/25 17:35, , 3F
記得getch好像螢幕上看不到, 還是getche() ??
08/25 17:35, 3F

08/25 17:41, , 4F
getchar()
08/25 17:41, 4F

08/25 17:54, , 5F
可是使用getch 系列的函式 只能抓取key的ascii 無法讀
08/25 17:54, 5F

08/25 17:54, , 6F
取中文啊~~
08/25 17:54, 6F

08/25 17:55, , 7F
我希望是已經key進 顯示在主控台介面上 但是還沒按下
08/25 17:55, 7F

08/25 17:55, , 8F
enter時的資訊~!!
08/25 17:55, 8F

08/25 17:56, , 9F
中文就沒辦法了....Orz
08/25 17:56, 9F

08/25 18:14, , 10F
tcsetattr 把 ICANON關掉 試試
08/25 18:14, 10F

08/25 18:15, , 11F
有個笨方法:發現取進來的字元可能是雙字元時再取一次
08/25 18:15, 11F

08/25 18:15, , 12F
譬如最「天真」的判斷是 (unsigned)c > 127 認定為中文
08/25 18:15, 12F
文章代碼(AID): #1AawabfG (C_and_CPP)
文章代碼(AID): #1AawabfG (C_and_CPP)