看板 C_and_CPP 關於我們 聯絡資訊
用的編譯器是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
nh60211as: 你有把word印出來看是什麼嗎 02/26 16:08
samuelcdf: &word 02/26 16:14
samuelcdf: 如果是%s的話, 你對應的word應該會宣告陣列吧. 直接寫 02/26 16:14
samuelcdf: 陣列名結果跟 &陣列名[0] 一樣 02/26 16:15
d630200x: 有加上&word,剛剛沒打到 02/26 16:19
※ 編輯: d630200x (101.8.227.43), 02/26/2019 16:20:58
d630200x: 主要是我另一支程式有用自字元做判斷,且判斷式使用都ok 02/26 16:23
d630200x: ,但就是會莫名印兩行,後來另外這樣寫做測試也是一樣情 02/26 16:23
d630200x: 況 02/26 16:23
samuelcdf: \n還在buffer裡面, 所以迴圈多跑一次 02/26 16:26
d630200x: 為什麼\n會還在buffer裡?為什麼迴圈會重跑? 02/26 16:31
samuelcdf: 每次你輸入一個字元之後, 接著會按enter. 那個enter也 02/26 16:33
samuelcdf: 被當成另外一個輸入的字元了 02/26 16:33
nthank: 輸入的enter也算是一個字元 02/26 17:38
MOONRAKER: 到底寫了多少程式才發現這個大家都知道的偉大bug 02/26 18:12
dces4212: stdin buffer裡面還有enter字元 02/26 19:01
stupid0319: 月經文 02/26 19:03
chchwy: 1. 換行符號 2. 這不是bug 02/26 19:53
tomsawyer: cin也會啊lul 02/26 21:02
Bencrie: 好險你沒有真的去 bugzilla 報 bug XD 02/27 01:28
IhateOGC: 台灣之光!! 快點去報Bug,這很明顯是Bug 02/27 09:45
IhateOGC: 我資料表單就常常遇到這鳥問題 02/27 09:45
OhYiDay: XD 02/27 10:57
TitanEric: 抱歉我笑了 02/27 11:37
wei115: 緩衝區日常,特別是格式化和非格式化特別容易遇到 02/27 13:53
x246libra: 原來有這種問題,之前沒特別注意,謝謝發文者 02/27 14:11
hunandy14: 記得是要把sancf 還什麼放到 while 內就好了 02/27 17:18
hunandy14: 阿想起來了 好像是 file 才是XDD 02/27 17:42
koka813: 真的是笑了 03/01 15:49
HanaYukii: cin不會 03/07 01:41
a0928855286: 那要怎麼解決啊? 03/12 01:14
jxzhe: https://i.imgur.com/Dmlm2Cb.jpg 03/16 17:49