[問題] 關於清空鍵盤緩衝區
開發平台(Platform): (Ex: Win10, Linux, ...)
win10 + cygwin
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
GCC 6.4.0
問題(Question):
我想要清空緩衝區
試過fflush(stdin)[非標準] 和 setbuf(stdin, NULL)[標準]
但我剛剛寫的題目中卻發現這兩個都沒在工作,緩衝區一樣有東西沒被清空
但我用GDB除錯的時候就正常工作了....
最後我用scanf("%[^\n]*s"); getchar();就正常運作
直接用scanf("%[^\n]*s%*c"); 也有機率不工作
這是我對緩衝區有所誤解以至於我錯誤使用這些功能嗎?
還是這些函式沒有競爭力,不懂什麼叫做吃苦當吃補,都沒在作功德
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 59.126.109.77
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1512657239.A.947.html
推
12/07 22:48,
8年前
, 1F
12/07 22:48, 1F
→
12/07 23:20,
8年前
, 2F
12/07 23:20, 2F
→
12/07 23:20,
8年前
, 3F
12/07 23:20, 3F
→
12/07 23:26,
8年前
, 4F
12/07 23:26, 4F
→
12/08 02:35,
8年前
, 5F
12/08 02:35, 5F
→
12/08 02:35,
8年前
, 6F
12/08 02:35, 6F
→
12/08 02:35,
8年前
, 7F
12/08 02:35, 7F
→
12/08 02:37,
8年前
, 8F
12/08 02:37, 8F
推
12/08 02:40,
8年前
, 9F
12/08 02:40, 9F
→
12/08 02:41,
8年前
, 10F
12/08 02:41, 10F
→
12/08 02:41,
8年前
, 11F
12/08 02:41, 11F
→
12/08 02:42,
8年前
, 12F
12/08 02:42, 12F
→
12/08 02:42,
8年前
, 13F
12/08 02:42, 13F
喔喔,原來是因為這樣 %s 和 %[] 都是參數的一種,所以用了%[] 後面就不能再加s
不然會多讀取到s
推
12/08 02:42,
8年前
, 14F
12/08 02:42, 14F
→
12/08 02:42,
8年前
, 15F
12/08 02:42, 15F
→
12/08 02:43,
8年前
, 16F
12/08 02:43, 16F
→
12/08 02:44,
8年前
, 17F
12/08 02:44, 17F
→
12/08 02:44,
8年前
, 18F
12/08 02:44, 18F
→
12/08 02:45,
8年前
, 19F
12/08 02:45, 19F
→
12/08 02:46,
8年前
, 20F
12/08 02:46, 20F
→
12/08 02:46,
8年前
, 21F
12/08 02:46, 21F
恩恩,感謝 難怪我看setbuf的功能好像不能清除緩衝區
推
12/08 03:38,
8年前
, 22F
12/08 03:38, 22F
※ 編輯: wei115 (120.109.132.226), 12/08/2017 09:51:33
→
12/08 10:43,
8年前
, 23F
12/08 10:43, 23F
→
12/08 10:44,
8年前
, 24F
12/08 10:44, 24F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章