PTT
Submit
Submit
選擇語言
正體中文
简体中文
PTT
C_and_CPP
[問題] 輸入太多字元會造成程式hang掉。
作者:
jay70120
(小鳥頭)
2016-03-21 17:30:19
目前剛在學習c++中
在寫一個猜數字的小遊戲,就是幾A幾B那一種的
可是我遇到了一個問題
就是當USER 輸入很長的一串字元的時候 就會造成程式HANG住
很想知道這是什麼原因。
如果有人知道請教導一下 >"< 感謝!!!
作者:
ronin728
(浪人)
2016-03-21 17:55:00
是不是用 char[] 當輸入資料? 用 std::string 會比較好
作者:
jay70120
(小鳥頭)
2016-03-21 18:17:00
是的我是用char因為要比對的原因… 用char比較方便…
作者:
ronin728
(浪人)
2016-03-21 18:39:00
這種情況發生在產品中可能會是個黑帽攻擊的安全漏洞可以利用scanf的長度限制功能 %50s 就是指從輸入區存入50個字元,當然長度可以自己訂另一種是用 std::string 的 str.c_str()回傳的是 std::string 裡面的 char*
作者:
LPH66
(-6.2598534e+18f)
2016-03-21 18:43:00
樓上講的攻擊的小範例
https://youtu.be/1S0aBV-Waeo
作者:
ronin728
(浪人)
2016-03-21 18:44:00
不過比對字串 char* 或 char[] 沒有比較方便...兩個char*比較用strcmp(),可是用 std::string 只要 ==
作者: WBTs (加權平衡樹)
2016-03-21 18:47:00
http://goo.gl/4xw6b0
作者:
ronin728
(浪人)
2016-03-21 18:47:00
str1 == str2 就好啦,很方便不是?其實WBTs大分享的方法有個小問題需要注意,C++11沒有VLA雖然GCC很好心的讓你在C++裏用VLA,但是MSVC++會拒絕str_a.c_str() 就能得到 char*,不用這麼麻煩
作者: WBTs (加權平衡樹)
2016-03-21 19:12:00
用動態陣列
作者: tuyutd0505 (Huang Jason)
2016-03-21 19:59:00
如果要抓出 string 中字元 除了[i]外也可以用相對安全的 str.at(i)
繼續閱讀
[問題] Deep learning net參數調整
AzureDay
[問題] 鍊結串列
WBTs
[問題] 請問OpenCV可在一圖型視窗分層繪圖嗎?
hotrain13
[問題] Sparse Hash Map多執行緒的問題(threads)
henry8168
[問題] 基因演算法及粒子群演算法
changjayhan
[問題] 改變@可以移動的範圍...確沒有效果
libra1005
[問題] 遊戲配對玩家問題
janice001
[問題] C語言 關於指標的疑問
angus60704
關於版主連署
wtchen
[問題] Readfile for RS232
skitty
Links
booklink
Contact Us: admin [ a t ] ucptt.com