| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1108 人关注过本帖
标题:为什么总是245,好郁闷。。。
只看楼主 加入收藏
吴军旗
Rank: 5Rank: 5
等 级:职业侠客
帖 子:286
专家分:308
注 册:2011-9-14
收藏
得分:0 
回复 5楼 TonyDeng
我只想说,很感谢。。。。。。。。。。。。

最惨的不是忘不了悲伤的回忆,而是那些悲伤的回忆却开始记不清。。。
2011-10-21 17:18
weiwei555
Rank: 5Rank: 5
来 自:中国
等 级:职业侠客
帖 子:179
专家分:323
注 册:2011-3-4
收藏
得分:0 
回复 5楼 TonyDeng
学习了……  
2011-10-22 17:35
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
对gets()函数,可能很多人会觉得它设计时会考虑到溢出问题而进行了处理,比如假想如果我定义char string[11],那么函数在读入数据时,若超出定义长度,应自动在string[10]写'\0'结束,而不应该崩溃。如果说这种传统C风格的gets()函数有不足,那么新式的安全函数gets_s(string, n)既然给出了最大数目n,也应该会这样做——的确我曾经这样以为过。但事实上,gets_s(string, n)也一样崩溃!MSDN文档上说gets_s()会在这种溢出情况下抛出异常,但对这似乎很简单、又常用的操作,总检测异常,不是大多数人会去做的事,甚至都没有这个意识。

在理论上说,无论定义多大的缓冲区,都不确保安全(我以前在接收控制台键盘输入的时候,一般把缓冲区定到1024,设想没谁会敲那么多键盘来搞破坏,但究其实不过是赌博罢了),而且浪费,这是一个矛盾,需要平衡艺术。现代C++编程,用动态数据模型,就不需要再考虑这个问题了,但对那些坚持传统C编程的人来说,是必须要注意的问题。

授人以渔,不授人以鱼。
2011-10-22 17:50
吴军旗
Rank: 5Rank: 5
等 级:职业侠客
帖 子:286
专家分:308
注 册:2011-9-14
收藏
得分:0 
回复 13楼 TonyDeng
你的话很有深度,感觉自己要学的还有很多。。。。。。。。。。。。。。。。。。

最惨的不是忘不了悲伤的回忆,而是那些悲伤的回忆却开始记不清。。。
2011-10-22 22:47
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:0 
13楼的说法,你暂时无法理解的,有个印象就好了,以后写多了程序,慢慢会明白。

授人以渔,不授人以鱼。
2011-10-22 22:52
yj269172025
Rank: 2
等 级:论坛游民
帖 子:41
专家分:81
注 册:2011-9-29
收藏
得分:0 
有趣之下我去玩玩发现,这个问题还真产生了一个有趣的东西,把'\b'换成其他转义字符,结果不一样,但是也是固定的值,其值跟随string[n]中n的变化而变化,不过这样写程序有点令人费解,给人一种异想天开的感觉!只能说楼主太有才了
2011-10-22 23:36
快速回复:为什么总是245,好郁闷。。。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.058726 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved