[問題] scanf的奇妙bug?

看板C_and_CPP作者 (DOGE)時間6年前發表 (2019/02/26 07:37), 6年前編輯推噓9(10120)
留言31則, 20人參與, 6年前最新討論串1/1
用的編譯器是gcc 平台是linux 剛剛寫一個無窮迴圈 char word; while(1) { printf("something\n"); scanf("%c", &word); } 用%c的話,something一定會重複印兩行才會給我輸入word 但改成%s的話就又沒這個bug了 請問這是甚麼問題? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 210.63.205.97 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1551166636.A.902.html

02/26 16:08, 6年前 , 1F
你有把word印出來看是什麼嗎
02/26 16:08, 1F

02/26 16:14, 6年前 , 2F
&word
02/26 16:14, 2F

02/26 16:14, 6年前 , 3F
如果是%s的話, 你對應的word應該會宣告陣列吧. 直接寫
02/26 16:14, 3F

02/26 16:15, 6年前 , 4F
陣列名結果跟 &陣列名[0] 一樣
02/26 16:15, 4F

02/26 16:19, 6年前 , 5F
有加上&word,剛剛沒打到
02/26 16:19, 5F
※ 編輯: d630200x (101.8.227.43), 02/26/2019 16:20:58

02/26 16:23, 6年前 , 6F
主要是我另一支程式有用自字元做判斷,且判斷式使用都ok
02/26 16:23, 6F

02/26 16:23, 6年前 , 7F
,但就是會莫名印兩行,後來另外這樣寫做測試也是一樣情
02/26 16:23, 7F

02/26 16:23, 6年前 , 8F
02/26 16:23, 8F

02/26 16:26, 6年前 , 9F
\n還在buffer裡面, 所以迴圈多跑一次
02/26 16:26, 9F

02/26 16:31, 6年前 , 10F
為什麼\n會還在buffer裡?為什麼迴圈會重跑?
02/26 16:31, 10F

02/26 16:33, 6年前 , 11F
每次你輸入一個字元之後, 接著會按enter. 那個enter也
02/26 16:33, 11F

02/26 16:33, 6年前 , 12F
被當成另外一個輸入的字元了
02/26 16:33, 12F

02/26 17:38, 6年前 , 13F
輸入的enter也算是一個字元
02/26 17:38, 13F

02/26 18:12, 6年前 , 14F
到底寫了多少程式才發現這個大家都知道的偉大bug
02/26 18:12, 14F

02/26 19:01, 6年前 , 15F
stdin buffer裡面還有enter字元
02/26 19:01, 15F

02/26 19:03, 6年前 , 16F
月經文
02/26 19:03, 16F

02/26 19:53, 6年前 , 17F
1. 換行符號 2. 這不是bug
02/26 19:53, 17F

02/26 21:02, 6年前 , 18F
cin也會啊lul
02/26 21:02, 18F

02/27 01:28, 6年前 , 19F
好險你沒有真的去 bugzilla 報 bug XD
02/27 01:28, 19F

02/27 09:45, 6年前 , 20F
台灣之光!! 快點去報Bug,這很明顯是Bug
02/27 09:45, 20F

02/27 09:45, 6年前 , 21F
我資料表單就常常遇到這鳥問題
02/27 09:45, 21F

02/27 10:57, 6年前 , 22F
XD
02/27 10:57, 22F

02/27 11:37, 6年前 , 23F
抱歉我笑了
02/27 11:37, 23F

02/27 13:53, 6年前 , 24F
緩衝區日常,特別是格式化和非格式化特別容易遇到
02/27 13:53, 24F

02/27 14:11, 6年前 , 25F
原來有這種問題,之前沒特別注意,謝謝發文者
02/27 14:11, 25F

02/27 17:18, 6年前 , 26F
記得是要把sancf 還什麼放到 while 內就好了
02/27 17:18, 26F

02/27 17:42, 6年前 , 27F
阿想起來了 好像是 file 才是XDD
02/27 17:42, 27F

03/01 15:49, 6年前 , 28F
真的是笑了
03/01 15:49, 28F

03/07 01:41, 6年前 , 29F
cin不會
03/07 01:41, 29F

03/12 01:14, 6年前 , 30F
那要怎麼解決啊?
03/12 01:14, 30F

03/16 17:49, 6年前 , 31F
文章代碼(AID): #1STEoia2 (C_and_CPP)