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结构的...

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

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

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

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

C语言文件操作之fgets()

来说一说fgets(..)函数。     原型  char *  fgets(char * s, int n,FILE *stream);     参数:          s: 字符型指针,指向存储...

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

1 #include 2 #include 3 #include "struct.h" //这是一个录入书的名称和价格的程序main函数 7 int main() 8 { 9...

ARM下的国密SM3软实现遇到的坑

国密SM3的C版本代码网上随处可摘,随便放到电脑上运行结果都很正确,可是放到ARM下就未必了。我遇到的是移植到iPhone上的坑,希望同行们不要再被坑到。 以下是PC上运行某问题的版本(网上直接摘...
  • wak0408
  • wak0408
  • 2015年12月21日 16:39
  • 2913

关于main(int argc, char* argv[])的理解

以前对main函数中的参数设置有一些理解,以为很简单,不就是argc是参数数量,argv是字符串数组,但是昨天写多进程的问题确实碰到了麻烦,今天仔细想了想其中的问题还确实不少。其中涉及到的问题也是方方...
  • liuhuiyi
  • liuhuiyi
  • 2012年11月29日 15:59
  • 15018

使用scanf和fgets需要注意的一个小问题

首先说一个我以前经常犯的小错误: #define BUF_SIZE 260 char lineBuf[BUF_SIZE]; 如果我们想通过fgets函数获得一行输入,下面: 1. fgets(...

Linux下输入输出函数fgets,fputs函数,printf参数问题!!!

在研究socket通信时遇到了这个函数: 客户端需要发送信息到服务端,客户端就通过fgets函数从标准输入输入字符,服务端在通过fputs将字符输出到标准输出 fgets: #include ...

fgets()函数输入的长度,以及strlen()函数返回的长度问题

fgets()函数输入的长度, 以及strlen()函数返回的长度问题, 在此做下测试(visual studio 2013): #include #include int main(void)...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:fgets函数使用时应该注意的问题
举报原因:
原因补充:

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