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