| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3246 人关注过本帖, 2 人收藏
标题:缓冲区的讲解(更改)
只看楼主 加入收藏
我菜119
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:938
专家分:1756
注 册:2009-10-17
收藏
得分:0 
之所以贴出这个帖子,是因为我在编写程序的时候发现在缓冲区这块遇到了一个问题:

一下可以用一段简短的代码来说明这个问题:
# include <stdio.h>

int
main()
{
    char string[10] ;
    gets( string ) ;
    puts( string ) ;
    return 0;
}
在这个程序里当我输入:1234567890ab的时候会发现程序依然可以把这个字符串输出来,而这个字符串的长度已经超出了我定义的string[10]长度呀,为什么还能够将一个十二个字符输出来呢???

所以想请教一下缓冲区的大小是如何设置的!!!

愿用余生致力编程
2010-10-14 11:04
az9841682
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:5
帖 子:312
专家分:596
注 册:2009-9-11
收藏
得分:9 
以下是引用御坂美琴在2010-10-13 22:58:45的发言:

 
你搞错了,我不去如鹏网,本人在读初中
lv5的炮姐 让我这个魔法使大叔 无地自容
2010-10-14 11:07
BlueGuy
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:29
帖 子:4476
专家分:4055
注 册:2009-4-18
收藏
得分:0 
缓冲区确实是个好东西,
gets()本身就是一个弱的函数, 你若改用fgets() 就不用花心思去设置缓冲区大小了。

我就是真命天子,顺我者生,逆我者死!
2010-10-14 11:35
cacker
该用户已被删除
收藏
得分:0 
回复 21楼 我菜119
提示: 作者被禁止或删除 内容自动屏蔽
2010-10-14 13:02
你们都要疼我哦
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:火星
等 级:贵宾
威 望:49
帖 子:1296
专家分:2746
注 册:2008-7-13
收藏
得分:0 
gets只管输入数据
puts只管输出数据
string只是作为他们认为的一个地址而已,他们只对他们自己的结束符敏感。
string[10]撑爆后,溢出,覆盖了下面的空间,有数据的话,就被破坏了。

问题不是你如何去设置什么缓冲区,而是你怎么去使用 怎么去避免溢出。

小妹,哥哥看你骨骼清奇,绝非凡人,将来必成大业,不如这样,你先把裤裤脱了,待哥哥为你开启灵窍,然后我们一起努力钻研如何
2010-10-14 14:06
huntree
Rank: 2
等 级:论坛游民
帖 子:15
专家分:10
注 册:2010-8-25
收藏
得分:9 
说了半天也没有回答楼主为什么会出错啊。会不会是因为你的string是char型的   会把两位10进制当做一位char。。输入30个数字还能都显示出来么

[ 本帖最后由 huntree 于 2010-10-14 16:51 编辑 ]

当时是真的,现在也是真的,就算我们没有变,世界也已经改变了。
2010-10-14 16:48
日的起烟烟
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:137
专家分:129
注 册:2010-2-27
收藏
得分:9 
24楼已经很清楚解释了错误的原因。

LS说的肯定不会··能不能显示··你运行一下前面那位···输出很a的就知道了··

2010-10-14 20:04
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
微软 VC 里给的 STL 是古董级的产品,STL 的最早的实现版本之一,出自 P. J. Plauge (也是个名人了,是 software tools in pascal 的作者之一) 之手。
这个版本,为以后所有的 STL 实现都打下了基础。不过看看也发现了,他这家伙搞算法倒是不错,编码的可读性却不是很好。烂是烂了点,但做为先驱说一坨屎就不合适了。
微软根本没下心思做这个,直接就拿来用了。
2010-10-14 22:40
longlong89
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广州
等 级:小飞侠
威 望:6
帖 子:1043
专家分:2754
注 册:2009-8-18
收藏
得分:9 
不发言 围观

想象力征服世界
2010-10-15 13:31
wangjianhui
Rank: 8Rank: 8
来 自:^帅帅城^
等 级:蝙蝠侠
威 望:2
帖 子:353
专家分:745
注 册:2010-3-19
收藏
得分:9 
热闹,学到不少东西

加油
2010-10-15 20:02
快速回复:缓冲区的讲解(更改)
数据加载中...
 
   



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

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