[問題] 如何Scanf不忽略空格

看板C_and_CPP作者 (PT鄉民)時間13年前 (2012/03/24 18:58), 編輯推噓2(2019)
留言21則, 12人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) DEV C++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 如標題所式 餵入的資料(Input): 自行輸入 錯誤結果(Wrong Output): 只輸出第一個字元就結束 程式碼(Code):(請善用置底文網頁, 記得排版) int main(int argc, char *argv[]) { int k,l; char input[50]; ... printf("輸入運算式:"); scanf("%s", input); type(input); ... system("PAUSE"); return 0; } 這裡我用%s是錯誤的嗎?? 比如我輸入 41 + 2 這樣有空格的地方就直接跳開了 而沒有繼續讀取下一個!!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.118.229.184

03/24 19:01, , 1F
getline
03/24 19:01, 1F

03/24 19:23, , 2F
www.cplusplus.com/reference/clibrary/cstdio/fgets/
03/24 19:23, 2F

03/24 19:37, , 3F
純 C 用 fgets
03/24 19:37, 3F

03/24 20:00, , 4F
scanf("%^\n\n",input); ??
03/24 20:00, 4F
這樣輸出只有 " 這個符號 更奇怪了@@

03/24 20:55, , 5F
fgets好用!
03/24 20:55, 5F
※ 編輯: APE36 來自: 140.118.229.184 (03/24 21:14)

03/24 21:17, , 6F
好用但是不安全阿...
03/24 21:17, 6F

03/24 21:25, , 7F
fgets(input,49,stdin); 還是一樣 沒作用呀qq
03/24 21:25, 7F

03/24 21:30, , 8F
fgets 安全阿....gets才不安全...
03/24 21:30, 8F

03/24 21:31, , 9F
很安全好嗎,不會超出index
03/24 21:31, 9F

03/24 21:33, , 10F
scanf函數名字告訴你是用格式的方式讀資料,但你想要的是跨
03/24 21:33, 10F

03/24 21:34, , 11F
格式讀資料,當然沒用. 你需要的是gets
03/24 21:34, 11F

03/24 21:44, , 12F
scanf("%[^\n]\n",input); ...
03/24 21:44, 12F
也一樣 只出現 " 這個符號沒其他符號

03/24 21:50, , 13F
竟然忘記這個參數 Orz...
03/24 21:50, 13F

03/24 21:56, , 14F
我覺得是其他地方的問題@@... 猜測前面有用scanf...
03/24 21:56, 14F
是呀 前面有用scanf ※ 編輯: APE36 來自: 140.118.229.184 (03/24 21:59)

03/24 22:03, , 15F
果然...在讀input前加上getchar();試試看
03/24 22:03, 15F

03/24 22:09, , 16F
加上getchar(); scanf輸入後,像當了程式就沒值跑出來了更怪
03/24 22:09, 16F

03/24 22:14, , 17F
可以給完整的code嗎?這樣有點難發現問題...
03/24 22:14, 17F

03/25 17:48, , 18F
fgets不行嗎 為啥堅持用scanf
03/25 17:48, 18F

03/25 18:03, , 19F
scanf("%[^\n]", input);應該是可以的吧
03/25 18:03, 19F

03/25 21:23, , 20F
不行 試過了~"~
03/25 21:23, 20F

03/26 13:14, , 21F
10樓 ID 好屌
03/26 13:14, 21F
文章代碼(AID): #1FRQZkMm (C_and_CPP)