[問題] scanf跟gets

看板C_and_CPP作者 (炸彈貓)時間14年前 (2011/12/04 15:17), 編輯推噓3(308)
留言11則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) win7 64bit CodeBlocks 10.5 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 如果gets()在scanf()下面就沒辦法正常輸入 想知道為什麼會這樣? 餵入的資料(Input): 1 ABC 預期的正確結果(Expected Output): ABC 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) http://codepad.org/36klSzjN 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.205.55.3

12/04 15:21, , 1F
scanf完後你的gets會吃到'\n'所以無法正常讀入
12/04 15:21, 1F

12/04 15:21, , 2F
可以scanf完後打一行scanf("%c",&eat);把'\n'吃掉
12/04 15:21, 2F

12/04 15:22, , 3F
或是寫scanf("%d\n",&N),他會把後面的'\n'處理掉
12/04 15:22, 3F

12/04 15:22, , 4F
不過比較不好因為有時候你要的ABC那一行如果是空行'\n'的話
12/04 15:22, 4F

12/04 15:22, , 5F
也會被連帶一起被處理掉所以還是eat那個比較好一點
12/04 15:22, 5F
謝謝f大 \(^▽^)/ 原來gets跟scanf斷開的地方不一樣 ^^ ※ 編輯: BombCat 來自: 123.205.55.3 (12/04 15:31)

12/04 15:32, , 6F
scanf獨到空白或是\n就會停住
12/04 15:32, 6F

12/04 15:33, , 7F
gets會把一整行讀完,就看input想怎麼輸入就看要用哪個
12/04 15:33, 7F

12/04 15:50, , 8F
不要用gets啦 用fgets
12/04 15:50, 8F

12/04 17:37, , 9F
在scanf的%d前面加上一個空格
12/04 17:37, 9F

12/04 17:41, , 10F
別理我...搞錯問題了- -
12/04 17:41, 10F

12/04 20:10, , 11F
scanf() + getchar() + gets()
12/04 20:10, 11F
文章代碼(AID): #1EsnwFug (C_and_CPP)