討論串關於gets(const char *)的用法?
共 6 篇文章
首頁
上一頁
1
2
下一頁
尾頁

推噓0(0推 0噓 0→)留言0則,0人參與, 最新作者fpylin (星空中的鋼琴手)時間19年前 (2006/09/10 20:38), 編輯資訊
0
0
0
內容預覽:
引述《nylon.bbs@bbs.ee.ncku.edu.tw (Pooh)》之銘言:. gets 和 scanf 都很危險 ... 少用為妙. 如果 user 打入字串比你的 buffer 更長, 會發生 segmentation fault. 用 fgets 代替. --. 發信站:

推噓0(0推 0噓 0→)留言0則,0人參與, 最新作者ssagit (ssagit)時間19年前 (2006/09/10 11:28), 編輯資訊
0
0
0
內容預覽:
我只能說, scanf 的問題可能比 gets 還要多,. scanf("%s", s); 這樣的語法, 它一樣不會檢查是不是超過 s 的長度,. 和 gets 一樣會有 buffer overflow 的問題..... 而上面的程式如果要連續讀兩行,. 可以寫成:. scanf("%[^\n]\n
(還有312個字)

推噓0(0推 0噓 0→)留言0則,0人參與, 最新作者jtmh (Believing is seeing! ^^)時間19年前 (2006/09/10 10:48), 編輯資訊
0
0
0
內容預覽:
這個的確可以讀取一整行,. 不過還是會有前述 keyboard buffer 中殘留字元的問題要解決。. --. 發信站: 批踢踢實業坊(ptt.cc). ◆ From: 218.175.157.16.

推噓0(0推 0噓 0→)留言0則,0人參與, 最新作者ssagit (ssagit)時間19年前 (2006/09/10 01:50), 編輯資訊
0
0
0
內容預覽:
也不是不行, Try:. char s[100];. scanf("%[^\n]", s);. printf("%s\n", s);. --. 發信站: 批踢踢實業坊(ptt.cc). ◆ From: 211.74.191.133.

推噓0(0推 0噓 0→)留言0則,0人參與, 最新作者jtmh (Believing is seeing! ^^)時間19年前 (2006/09/10 00:58), 編輯資訊
0
0
2
內容預覽:
引述《nylon.bbs@bbs.ee.ncku.edu.tw (Pooh)》之銘言:. 可能是 keyboard buffer 中還留有上次輸入未被完全讀完的字元 (包括 '\n'),. 而導致 gets() 直接讀取那些字元 (到 '\n' 為止),. 所以就出現程式未停下來讓你輸入的現象,
(還有95個字)
首頁
上一頁
1
2
下一頁
尾頁