fgets()函数可以防止存储溢出,为什么?

wendy_welcom 2007-12-07 11:06:27
fgets()函数可以防止存储溢出,为什么?
...全文
292 7 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
ttlyfast 2007-12-07

从低级文件函数打开的文件或通信端口中返回一连串字节,直至遇到回车符。

语法

FGETS(nFileHandle [, nBytes])

参数

nFileHandle

指定一个数值型文件句柄,FGETS( ) 函数根据此句柄,从相应的文件或通信端口返回数据。

nBytes

指定由 FGETS( ) 函数返回的字节数。如果在此之前没有遇到回车符,FGETS( ) 函数返回 nBytes 个字节。如果回车符在 nBytes 个字节当中,则 FGETS( ) 函数返回文件指针起始位置与回车符之间的数据。
如果省略 nBytes,则 FGETS( ) 函数默认最多可返回 254 个字节。

返回值类型
字符型

说明
通过使用一串 FGETS( ) 函数,可以逐行阅读文件。
FGETS( ) 函数将一串字节作为单个字符串返回,所返回的数据从文件指针的当前位置开始,直至遇到回车符为止,此时文件指针将定位在紧接此回车符的字节上。回车符不包含在所返回的字节中,其中的换行符也被放弃。

如果省略 nBytes,则 FGETS( ) 函数默认最多可返回 254 个字节。
  • 打赏
  • 举报
回复
alen88 2007-12-07
fgets()可以接受用来限制读入字符数目的大小参数,如:fgets(str,n,fp);是从fp所指的文件中读出n-1个字符送入字符数组str中。
  • 打赏
  • 举报
回复
ttlyfast 2007-12-07
自己跟踪看看89明白挖?
  • 打赏
  • 举报
回复
wendy_welcom 2007-12-07
thanks :-)
  • 打赏
  • 举报
回复
Eat_By_Cpp 2007-12-07
相反gets这个函数是不安全的
它就相当容易溢出的呵呵
  • 打赏
  • 举报
回复
Eat_By_Cpp 2007-12-07
可以的
因为他的原型是:
char *fgets(
char *str,
int n,
FILE *stream
);
从一个文件里面读取制定数目的文字到str中取

这样就防止了你的输入超出字符串的限度

  • 打赏
  • 举报
回复
chlaws 2007-12-07
fgets(str,n,fp)//n控制了字符长度
  • 打赏
  • 举报
回复
相关推荐
发帖
C语言
加入

6.6w+

社区成员

C语言相关问题讨论
申请成为版主
帖子事件
创建了帖子
2007-12-07 11:06
社区公告
暂无公告