|
网站首页
|
业界新闻
|
小组
|
威客
|
人才
|
下载频道
|
博客
|
代码贴
|
在线编程
|
编程论坛
|
登录
注册
短消息
我发表的主题
我参与的主题
我收藏的贴子
我上传的附件
我下过的附件
编辑个人资料
我的博客
用户控制面板
搜索
道具
恢复默认风格
碧海青天
秋意盎然
棕红预览
粉色回忆
蓝雅绿
紫色淡雅
青青河草
e点小镇
橘子红了
红红夜思
水晶紫色
雪花飘飘
新年快乐
风格
短消息
论坛展区
帮助
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 求大神解答下 gets()和 fgets()遇到换行符有什么区别
我的收件箱(0)
欢迎加入我们,一同切磋技术
用户名:
密 码:
共有
9892
人关注过本帖
标题:
求大神解答下 gets()和 fgets()遇到换行符有什么区别
只看楼主
加入收藏
菜鸟132
等 级:
新手上路
帖 子:2
专家分:0
注 册:2014-9-10
结帖率:
0
楼主
收藏
已结贴
√
问题点数:20 回复次数:4
求大神解答下 gets()和 fgets()遇到换行符有什么区别
gets从stdin中读取字符到数组中,当输入遇见换行符终止时,gets丢弃这个字符,不会把它存在数字里,那么缓冲区里面还有没有换行符呢
搜索更多相关主题的帖子:
换行符
缓冲区
2014-09-11 20:56
举报帖子
使用道具
赠送鲜花
魑魅魍魉!
来 自:亲爱MM肚子里!
等 级:
论坛游侠
威 望:
1
帖 子:61
专家分:149
注 册:2014-5-3
第
2
楼
收藏
得分:7
fgets()函数用于从文件流中读取一行或指定个数的字符,送到缓冲区。当遇到换行符时,fgets()函数就会停止,返回读到的数据。
gets函数会将行末的回车符当作一个空行读入。
2014-09-11 21:16
举报帖子
使用道具
赠送鲜花
菜鸟132
等 级:
新手上路
帖 子:2
专家分:0
注 册:2014-9-10
第
3
楼
收藏
得分:0
回复 2 楼 魑魅魍魉!
谢谢你的解答,那么缓冲区内是不是也没有回车符了
2014-09-11 21:26
举报帖子
使用道具
赠送鲜花
Coincedence4
等 级:
论坛游侠
帖 子:52
专家分:151
注 册:2014-9-4
第
4
楼
收藏
得分:7
fgets从指定的文件读入,遇到换行或EOF就停止,之后加上'\0'。gets是标准读入,其他没啥区别。
2014-09-11 21:58
举报帖子
使用道具
赠送鲜花
rjsp
等 级:
版主
威 望:
528
帖 子:9025
专家分:54030
注 册:2011-1-18
第
5
楼
收藏
得分:7
别提什么『缓冲区』,这不是C/C++的概念
gets的原型是 char *gets( char *buffer ); 它没有指定buffer的长度,因此程序员必须保证buffer足够装得下需要读取的行。
换句话说,当你使用gets时,就等于向编译器保证了buffer一定足够,
因此buffer中是不需要容纳'\n'的
。
现实中,程序员无法保证buffer一定足够容纳下需要读取的行(甚至包括故意的数组溢出攻击),
因此gets这个函数已经被C/C++语言废弃了
。
fgets的原型是 char *fgets( char *buffer, int n, FILE *stream ); 它指定了buffer长度,但程序员如何区分是读完整了一行而结束,还是读满了buffer而结束?
因此buffer中可能会包含'\n'
,因读满buffer而结束时buffer中无'\n',因读完了行而结束时buffer中带'\n',以作区分。最后一行例外,因为最后一行自有feof来判断,若最后一行无回车,是不会故意添加'\n'的。
2014-09-12 16:10
举报帖子
使用道具
赠送鲜花
5
1/1页
1
快速回复:
求大神解答下 gets()和 fgets()遇到换行符有什么区别
数据加载中...
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 0.015761 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved