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

wendy_welcom 2007-12-07 11:06:27
fgets()函数可以防止存储溢出,为什么?
...全文
456 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
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 :-)
就呆在云上 2007-12-07
  • 打赏
  • 举报
回复
相反gets这个函数是不安全的
它就相当容易溢出的呵呵
就呆在云上 2007-12-07
  • 打赏
  • 举报
回复
可以的
因为他的原型是:
char *fgets(
char *str,
int n,
FILE *stream
);
从一个文件里面读取制定数目的文字到str中取

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

chlaws 2007-12-07
  • 打赏
  • 举报
回复
fgets(str,n,fp)//n控制了字符长度

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧