[問題] 整列字串輸入與取得

看板C_and_CPP (C/C++)作者 (Laxrry)時間11年前 (2014/10/28 09:59), 編輯推噓1(108)
留言9則, 3人參與, 最新討論串1/1
開發平台 codeblock 使用 C 語言 http://ppt.cc/SpBT 由於此題ACM需要輸入整列字串 於是我使用gets() http://codepad.org/EQduelG6 這個只是我想先測試輸入的狀況 但是當我輸入n的值的時候 他竟然直接給我空兩行!!! (不好意思 這個部分沒辦法截到圖po上來) 我在想是不是因為printf有加\n的關係 沒有加的話 就不會發生這種問題 但是最後測試的輸出結果就是要換行.... scanf 雖然不會有這種問題 但是scanf遇到空白字元 不是會停止取字元嗎? 像這樣 http://ppt.cc/39Fm printf 就沒辦法印出整列的@@ 到底該怎麼辦呢? 然後就是不管是用scanf("%s") 還是用gets(字串名稱) 輸入字串後 比如str[6] 我輸入字串 north 是不是compiler 就會視為 str[0] -> n str[1] -> o str[2] -> r str[3] -> t str[4] -> h str[5] -> \0 這樣是否理解是否正確? 還請各位前輩 幫忙解開小的疑惑 謝謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.123.240.79 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1414461564.A.655.html

10/28 11:55, , 1F
scanf 後面跟的 gets 會先吃掉 scanf 沒吃掉的換行當做一次
10/28 11:55, 1F

10/28 11:55, , 2F
輸入 (其結果是空字串), 再下一次才會正確讀到下一行
10/28 11:55, 2F

10/28 11:56, , 3F
解法有二: 一是偷雞法, scanf 完先用一次 gets 把那個換行
10/28 11:56, 3F

10/28 11:56, , 4F
吃掉, 第二次開始才正常處理; 二是連數字都用 gets 吃進來
10/28 11:56, 4F

10/28 11:56, , 5F
再用 sscanf 或 atoi 轉數字處理
10/28 11:56, 5F

10/28 15:02, , 6F
不好意思 樓上的L大 你說的解決方法 我有點不懂@@
10/28 15:02, 6F

10/28 15:03, , 7F
不太知道您說的 應該要改成甚麼才好? 我試過結果就當了..
10/28 15:03, 7F

10/28 16:18, , 8F
L大的意思是法1.連做兩次gets 或使用法2.一開始不要用
10/28 16:18, 8F

10/28 16:19, , 9F
scanf而是也用gets再把char轉成int
10/28 16:19, 9F
文章代碼(AID): #1KJlXyPL (C_and_CPP)
文章代碼(AID): #1KJlXyPL (C_and_CPP)