fgets函数使用时应该注意的问题

原创 2012年03月27日 16:38:24

一、原型是char *fgets(char *s, int n, FILE *stream);  作用是从流中读取n-1个字符,除非读完一行,参数s是来接收字符串,如果成功则返回s的指针,否则返回NULL。  

  形参注释:*s结果数据的首地址;n-1:一次读入数据块的长度,其默认值为1k,即1024;stream是文件指针
  例:如果一个文件的当前位置的文本如下
  Love ,I Have
  但是,如果用 
  fgets(str1,4,file1);
  则执行后str1="Lov",读取了4-1=3个字符,
  而如果用 
  fgets(str1,23,file1);

  则执行str1="Love ,I Have",读取了一行(包括行尾的'\n',并自动加上字符串结束符'\0')。

 

二、fgets函数使用指针需要分配内存,或者使用数组。

 

三、用fgets(str,3,stdin)从屏幕读取数据时,比如屏幕输入:MSG 回车

第二次调用fgets(str,3,stdin)时,没有提示要输入数据了,原因很简单:回车以作为第二次调用结果输入进去,这样下次程序肯定出问题了。

Linux中fgets函数注意事项

include  char *fgets(char *s, int size, FILE *stream); s:数据存储位置 size:读取字符串的最大数量 stream:指向FILE结构的...
  • Choice_JJ
  • Choice_JJ
  • 2012年10月16日 21:47
  • 13100

单线程中fgets阻塞select/poll/epoll的解决方法

问题引出 一个client程序:select 超时监听 sockfd套接字 和 STDIN_FILENO标准输入:若sockfd可读则接收server报文;若标准输入可读(按下回车),则开始用fget...
  • jye777
  • jye777
  • 2015年08月24日 15:49
  • 1697

fgets()

fget函数的原型如下:char *fgets(char *buf, int n, FILE *fp) 功能:从文件流读取一行,送到缓冲区,使用时注意以下几点: 1.当遇到换行符或者缓冲区已满,fg...
  • u013806814
  • u013806814
  • 2014年03月11日 21:55
  • 1150

由scanf() 和 fgets() 引发的思考

最近在学C的时候, 偶然观察到scanf()的一些“有趣”的表现。我总结了一下,写成此文。      首先是test1()。 一眼看去,程序期望用户输入两次数据。先是 scanf(),后是fgets...
  • u010114214
  • u010114214
  • 2014年06月06日 21:52
  • 1024

关于fgets()函数使用时遇到的问题和解决办法

1 #include 2 #include 3 #include "struct.h" //这是一个录入书的名称和价格的程序main函数 7 int main() 8 { 9...
  • xiaoyu_luobei
  • xiaoyu_luobei
  • 2017年03月12日 11:44
  • 719

C语言文件操作之fgets()

来说一说fgets(..)函数。     原型  char *  fgets(char * s, int n,FILE *stream);     参数:          s: 字符型指针,指向存储...
  • daiyutage
  • daiyutage
  • 2013年01月25日 11:57
  • 157869

C/C++语言文件操作之fgets

来说一说fgets(..)函数。     原型  char *  fgets(char * s, int n,FILE *stream);     参数:          s: 字...
  • qdx411324962
  • qdx411324962
  • 2014年12月14日 22:53
  • 618

【C语言】-->语法 fgets函数原理初探

问题来源于《 c与指针》 1.7章节中的一个问题: 问题:下面的代码可能出现什么问题?                while ( gets (input) != NULL){}...
  • chenglibin1988
  • chenglibin1988
  • 2013年03月29日 20:46
  • 8042

socket编程---fgets和fputs函数使用理解

这一节是继续上一节socket05的讨论,来探讨在使用socket进行通信中遇到的一些函数使用理解误区1.fgets的使用注意点在写socket通信(代码见上一篇中,只是将sendbuf和recvbu...
  • tingyun_say
  • tingyun_say
  • 2016年07月24日 14:47
  • 1232

从终端读取一行数据,fgets,gets,c++ string类定义的getline

从终端读取一行数据,且看getline,fgets,gets的区别。 先看getline,
  • zzyafyj
  • zzyafyj
  • 2014年08月13日 01:00
  • 5951
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:fgets函数使用时应该注意的问题
举报原因:
原因补充:

(最多只允许输入30个字)