PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
C_and_CPP
[問題] 整列字串輸入與取得
作者:
laiDark
(煎餃加賴)
2014-10-28 09:59:21
開發平台 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
這樣是否理解是否正確?
還請各位前輩 幫忙解開小的疑惑 謝謝!!
作者:
LPH66
(-6.2598534e+18f)
2014-10-28 11:55:00
scanf 後面跟的 gets 會先吃掉 scanf 沒吃掉的換行當做一次輸入 (其結果是空字串), 再下一次才會正確讀到下一行解法有二: 一是偷雞法, scanf 完先用一次 gets 把那個換行吃掉, 第二次開始才正常處理; 二是連數字都用 gets 吃進來再用 sscanf 或 atoi 轉數字處理
作者:
laiDark
(煎餃加賴)
2014-10-28 15:02:00
不好意思 樓上的L大 你說的解決方法 我有點不懂@@不太知道您說的 應該要改成甚麼才好? 我試過結果就當了..
作者:
nakabin
(日落)
2014-10-28 16:18:00
L大的意思是法1.連做兩次gets 或使用法2.一開始不要用scanf而是也用gets再把char轉成int
繼續閱讀
[問題] 2位數以上的四則運算
amy99778
Re: [問題] 在Linux下,C/C++可以使用messagebox嗎?
better4532
[問題] 無限迴圈逾時跳出
andy2007
[問題] C讀取txt檔到一半就掛了? 第一行讀不到?
m4141922
[問題]矩陣的次方問題
ljuyentintho
[問題] 自訂標頭檔
jacky1989
[問題] ACM 101 - Runtime Error (已解決)
jammy50605
[問題] mpi 在單一node開啟外部程式
rx800102
[問題] pointer_array size的問題
kdok123
Re: [問題] 請教一些觀念題(指標,容量,reference)
cjcat2266
Links
booklink
Contact Us: admin [ a t ] ucptt.com