《C和指针》16页中的第八题,求理解?
问题是: 8 rearrange 程序包含下面的语句
while ( gets( input ) != NULL ) {
你认为这段代码可能会出现什么问题??
郁闷,什么意思啊。这个放哪里啊。
[解决办法]
这样容易缓冲区溢出呀!是unix平台常见的错误
[解决办法]
gets基本上不要使用它!是不安全的函数,用fgets代替!
[解决办法]
gets(input)
你输入的字符总要保存在计算机里面吧,问题是你输入的可以是无限的,而计算机的内存是有限的。这就是这段代码可能出现的问题。
[解决办法]
gets()函数 接受字符的时候是放在 缓冲区的
不是马上提交给程序。 它提交的标志就是 换行字符
那你输人的字符串大于这个区域呢? 容量有限 装不下。当然会丢失一些数据楼。
用fgets()吧
gets()的不足是他不检查预留存储区是否能够容纳实际输入的数据。
lz看看这吧http://www.ibm.com/developerworks/cn/security/buffer-defend/index.html