fgets函数的返回值是什么(关于C语言fgets()读取文件)

2024-07-16 12:10:53 2

fgets函数的返回值是什么(关于C语言fgets()读取文件)

大家好,fgets函数的返回值是什么相信很多的网友都不是很明白,包括关于C语言fgets()读取文件也是一样,不过没有关系,接下来就来为大家分享关于fgets函数的返回值是什么和关于C语言fgets()读取文件的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!

本文目录

关于C语言fgets()读取文件

  C语言中fgets()函数说明:fgets()用来从参数stream 所指的文件内读入字符并存到参数s 所指的内存空间,直到出现换行字符、读到文件尾或是已读了size-1 个字符为止, 最后会加上NULL 作为字符串结束。

  原型  char *  fgets(char * s, int n,FILE *stream);

  参数:

  s: 字符型指针,指向存储读入数据的缓冲区的地址。

  n: 从流中读入n-1个字符。

  stream : 指向读取的流。

  返回值:

          1. 当n《=0 时返回NULL,即空指针。

          2. 当n=1 时,返回空串""。

          3. 如果读入成功,则返回缓冲区的地址。

          4. 如果读入错误或遇到文件结尾(EOF),则返回NULL。

   标准库中fgets(...)的实现如下:

   char *fgets(char *s, int n,  FILE *stream)               {                    register int c;                    register char *cs;                    cs=s;                    while(--n》0 &&(c = getc(stream))!=EOF)                         if ((*cs++=  c) ==’\n’)                           break;                     *cs =’\0’;                     return (c == EOF && cs == s) ?NULL :s ;                   }

  

c语言fgets函数返回值问题,要是读到一串字符的末尾,那么函数返回值是NULL吗还是说只有读取

关于 C 语言中的 fgets( ) 函数,该函数的作用就是从文本文件中读取一行文本内容。该函数执行成功将返回读入的字符串 buffer,读取失败或读到文件结尾返回NULL。例如如下代码:#define MAX 300void main( ){unsigned char buffer ;FILE * fpr ;fpr = fopen("my_text.txt","r);if( fpr == NULL ) /*文本文件打开失败,则退出 */{printf("File open error !\n");exit(1);}fgets(buffer,MAX, fpr); /* 从文本文件中读取一行数据 */while( ! feof(fpr) ) /* 当文本文件未结束时 */{printf("buffer is: %s", buffer) ; /* 输出刚刚读取的文本文件的内容 */fgets(buffer,MAX,fpr); /* 继续读取下一行数据 */}fclose(fpr); /* 关闭文件 */}

fgets函数用法

fgets函数功能为从指定的流中读取数据,每次读取一行。其原型为:char *fgets(char *str, int n, FILE *stream);从指定的流 stream 读取一行,并把它存储在 str 所指向的字符串内。

扩展资料:

一、函数原型是:char *fgets(char *s, int n, FILE *stream);

从文件结构体指针stream中读取数据,每次读取一行。读取的数据保存在buf指向的字符数组中,每次最多读取bufsize-1个字符(第bufsize个字符赋’\0’),如果文件中的该行,不足bufsize-1个字符,则读完该行就结束。

如若该行(包括最后一个换行符)的字符数超过bufsize-1,则fgets只返回一个不完整的行,但是,缓冲区总是以NULL字符结尾,对fgets的下一次调用会继续读该行。

函数成功将返回buf,失败或读到文件结尾返回NULL。因此我们不能直接通过fgets的返回值来判断函数是否是出错而终止的,应该借助feof函数或者ferror函数来判断。

二、与gets相比使用这个好处是:读取指定大小的数据,避免gets函数从stdin接收字符串而不检查它所复制的缓存的容积导致的缓存溢出问题。

三、功能:

1、《UNIX 环境高级编程》中指出,每次调用fgets函数会造成标准输出设备自动刷清!案例详见《UNIX环境高级编程(第二版)》中程序清单1-5和课后习题5.7,习题5.7的答案中给出了相关的论述。

2、初入门者,大多数是在WINDOWS下,使用VS进行练习的。此环境下,对注意1中的情况进行测试,并不能看到案例中所描述的情景,因为具体的实现不同。

c语言中fgets操作方法,求一简单程序示范

fgets为stdin.h头文件中声明的,从文件中读取字符串的函数。

原型:

char *fgets(char *buf, int bufsize, FILE *stream);

参数:

    buf: 指向用来存储字符串的内存位置。

    bufsize: 读取数据的大小。

    stream: 将要读取的文件流。

fgets最多从文件中读取bufsize-1个字符,若读取的行不足bufsize-1个字符,则读取完这行后就结束;若读取的行超过bufsize-1个字符,则只读取bufsize-1个字符,下次调用fgets时,将从此行未读取完的位置继续读取。

示例:

#include 《stdio.h》int main(){    char s;    FILE *fin = fopen("a.txt", "r");        fgets(s, 60, fin);    puts(s);    fclose(fin);        return 0;}

求助~c语言fgets()怎么写啊

#include 《string.h》 #include 《stdio.h》 int main(void) { FILE *stream; char string = "This is a test"; char msg; /* open a file for update */ stream = fopen("DUMMY.FIL", "w+"); /* write a string into the file */ fwrite(string, strlen(string), 1, stream); /* seek to the start of the file */ fseek(stream, 0, SEEK_SET); /* read a string from the file */ fgets(msg, strlen(string)+1, stream); /* display the string */ printf("%s", msg); fclose(stream); return 0; } fgets函数用来从文件中读入字符串。fgets函数的调用形式如下:fgets(str,n,fp);此处,fp是文件指针;str是存放在字符串的起始地址;n是一个int类型变量。函数的功能是从fp所指文件中读入n-1个字符放入str为起始地址的空间内;如果在未读满n-1个字符之时,已读到一个换行符或一个EOF(文件结束标志),则结束本次读操作,读入的字符串中最后包含读到的换行符。因此,确切地说,调用fgets函数时,最多只能读入n-1个字符。读入结束后,系统将自动在最后加’\0’,并以str作为函数值返回。

c语言中的fgets函数

fgets()函数用于从文件流中读取一行或指定个数的字符,其原型为:char*fgets(char*string,intsize,FILE*stream);参数说明:string为一个字符数组,用来保存读取到的字符。size为要读取的字符的个数。如果该行字符数大于size-1,则读到size-1个字符时结束,并在最后补充’\0’;如果该行字符数小于等于size-1,则读取所有字符,并在最后补充’\0’。即,每次最多读取size-1个字符。stream为文件流指针。【返回值】读取成功,返回读取到的字符串,即string;失败或读到文件结尾返回NULL。因此我们不能直接通过fgets()的返回值来判断函数是否是出错而终止的,应该借助feof()函数或者ferror()函数来判断。注意:fgets()与gets()不一样,不仅仅是因为gets()函数只有一个参数FILE*stream,更重要的是,fgets()可以指定最大读取的字符串的个数,杜绝了gets()使用不当造成缓存溢出的问题。

c语言中fgets函数的返回值,什么情况下返回空指针

fgets 是系统输入函数,从文件流读入一行字符串,含空格键等,函数原型是:char * fgets ( char * str, int num, FILE * stream );输入成功时,返回 char 型指针,指向 读入的字符串内容,含换行键(gets 类似,但不含换行键)。输入失败时,返回 NULL。(与此同时 ,自动设置了 feof, ferror 的状态标志)。

关于fgets函数 为什么输出AB\nAB,谢谢啦

当第二次读的时候, 实际上是出错的, 但是你没有对fgest的返回值做判断, 

于是 仍会打印上一次的结果。 

改成

while(1){    if(fgets(...) == NULL) break;    printf(...);}

...部分 按照你原来的就可以了。 

函数返回值是指针

f函数调用完b被回收的含义是:通知系统,b所占用的内存空间现在是自由的了,其他程序可以使用这块内存了,在被其他程序占用修改前,它还是以前的值。但什么时候会改变,谁也不知道,可能很久才会被其他程序占用,也可能立即会被修改,所以,不要返回一个局部变量的地址。

就你这个代码测试一下:

第二次输出就变了

如果你还想了解更多这方面的信息,记得收藏关注本站。

fgets函数的返回值是什么(关于C语言fgets()读取文件)

本文编辑:admin

本文相关文章:


fgets函数的返回值是什么(求助~c语言fgets()怎么写啊)

fgets函数的返回值是什么(求助~c语言fgets()怎么写啊)

本文目录求助~c语言fgets()怎么写啊关于fgets函数 为什么输出AB\nAB,谢谢啦fgets函数用法函数返回值是指针c语言中的fgets函数c语言fgets函数返回值问题,要是读到一串字符的末尾,那么函数返回值是NULL吗还是说只

2024年7月15日 06:08

更多文章:


html表格菜鸟教程(如何用html编写表格)

html表格菜鸟教程(如何用html编写表格)

本文目录如何用html编写表格html如何做表格如何用html编写表格楼主你好。html编写表格的方法有多种。最简单的就是用html标签《table》《/table》表格是由表头,表格,表行组成的。表头《tt》《/tt》表行《tr》《/tr

2023年12月8日 14:40

java课程设计图片查看器(用java编写一个图片浏览器)

java课程设计图片查看器(用java编写一个图片浏览器)

本文目录用java编写一个图片浏览器用java写的图片查看器运行时怎么没有图片显示出来丫java小程序图片查看器代码,实现放大、缩小、旋转功能java写的图片查看器不用graphic2D怎么实现图片在画布上旋转功能java图片查看器上一张

2024年7月21日 21:58

aspireone笔记本(Acer Aspire one超便携迷你笔记本电脑配置怎么样)

aspireone笔记本(Acer Aspire one超便携迷你笔记本电脑配置怎么样)

“aspireone笔记本”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看aspireone笔记本(Acer Aspire one超便携迷你笔记本电脑配置怎么样)!本文目录Acer Aspire one超便携迷你笔记本电脑配

2024年9月5日 07:25

一维数组初始化为0(c语言中定义一维数组如果想全部都赋值为0可以写成a[10]={}吗)

一维数组初始化为0(c语言中定义一维数组如果想全部都赋值为0可以写成a[10]={}吗)

本文目录c语言中定义一维数组如果想全部都赋值为0可以写成a[10]={}吗不是很懂你们C语言,一维数组可以怎么定义的吧为什么从0输出到8LabVIEW中数组常量的初始化,如将一维数组初始化为0~2048,将二维数组初始化为0000~1111

2024年7月23日 02:11

大一数据库知识点(Oracle数据库有哪些知识点,请讲全面,不用详细介绍每个知识点)

大一数据库知识点(Oracle数据库有哪些知识点,请讲全面,不用详细介绍每个知识点)

本文目录Oracle数据库有哪些知识点,请讲全面,不用详细介绍每个知识点数据库主要知识点 急急急!Oracle数据库有哪些知识点,请讲全面,不用详细介绍每个知识点Oracle的体系 Oracle的体系很庞大,要学习它,首先要了解O

2024年6月28日 09:04

用户   [yòng hù]什么意思近义词和反义词是什么英文翻译是什么?英语user和costomer作为用户的区别是什么

用户   [yòng hù]什么意思近义词和反义词是什么英文翻译是什么?英语user和costomer作为用户的区别是什么

大家好,如果您还对用户英文不太了解,没有关系,今天就由本站为大家分享用户英文的知识,包括用户   [yòng hù]什么意思近义词和反义词是什么英文翻译是什么的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录用户  

2024年7月27日 10:35

直方图和条形图的图片(如何区分直条图与直方图)

直方图和条形图的图片(如何区分直条图与直方图)

本文目录如何区分直条图与直方图如图是什么意思如何区分直条图与直方图直条图与直方图的区别:1、直方图 是用 “面积” 表示各组频数的多少,矩形的高度表示每一组的频数或频率,宽度则表示各组的组距,因此其高度与宽度均有意义;条形图是用条形的 “长

2024年7月22日 10:27

小白翻译成英语是smallwhite好还是littlewhite好?小白的英文名是什么

小白翻译成英语是smallwhite好还是littlewhite好?小白的英文名是什么

本文目录小白翻译成英语是smallwhite好还是littlewhite好小白的英文名是什么小白英文怎么说“小白”用英文怎么说“小白”英文的缩写又是什么小白的英文怎么写小白,用英语怎么写小白翻译成英语是smallwhite好还是little

2024年7月21日 16:12

swing节奏(像重金属、EDM、Hip-Hop、摇滚等劲爆音乐风格适合什么年龄段的人听)

swing节奏(像重金属、EDM、Hip-Hop、摇滚等劲爆音乐风格适合什么年龄段的人听)

本文目录像重金属、EDM、Hip-Hop、摇滚等劲爆音乐风格适合什么年龄段的人听尤克里里的shuffle节奏该怎么弹像重金属、EDM、Hip-Hop、摇滚等劲爆音乐风格适合什么年龄段的人听不一定非得要分年龄段吧!不是所有的中老年人都听着古老

2024年6月10日 09:10

cmake文件(cmake编译单/多文件)

cmake文件(cmake编译单/多文件)

大家好,关于cmake文件很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于cmake编译单/多文件的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!本文目录cma

2024年9月3日 21:40

好看的个人网站源码(求一可以做歌星个人网站的源码)

好看的个人网站源码(求一可以做歌星个人网站的源码)

大家好,今天小编来为大家解答以下的问题,关于好看的个人网站源码,求一可以做歌星个人网站的源码这个很多人还不知道,现在让我们一起来看看吧!本文目录求一可以做歌星个人网站的源码个人网站日记源码求一套漂亮的asp个人网站或博客系统求一可以做歌星个

2024年8月12日 21:25

ios软件开发简介(ios开发是什么)

ios软件开发简介(ios开发是什么)

本文目录ios开发是什么ios系统是基于什么环境下开发的用什么语言什么工具编写该系统有何优缺点ios开发是什么iOS开发就是开发运行在搭载iOS系统上的应用或者游戏软件,也就是可以开发一些运行在iPhone上的软件,比如手机QQ、微博或者游

2024年7月14日 22:07

手机网页翻译日文(我上日本的网站,都是日文看不明白,怎么把他网站的内容直接翻译成中文)

手机网页翻译日文(我上日本的网站,都是日文看不明白,怎么把他网站的内容直接翻译成中文)

各位老铁们,大家好,今天由我来为大家分享手机网页翻译日文,以及我上日本的网站,都是日文看不明白,怎么把他网站的内容直接翻译成中文的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了

2024年8月22日 19:00

微服务架构做cs架构(cs架构为啥后端安装前端也要安装)

微服务架构做cs架构(cs架构为啥后端安装前端也要安装)

本文目录cs架构为啥后端安装前端也要安装BC和CS架构是什么有何区别优缺点是啥跪求答案各位软件或者计算机高手帮帮我cs和bs架构的区别关于cs架构,bs架构,云计算后端开发从零起步【1】CS\BS架构bs架构如何转换为cs架构cs架构为啥后

2024年7月20日 04:06

电脑ip地址查询方法cmd(cmd怎么查看电脑ip地址)

电脑ip地址查询方法cmd(cmd怎么查看电脑ip地址)

本文目录cmd怎么查看电脑ip地址电脑cmd怎么查ip地址cmd怎么查看电脑ip地址很多人不会用这个方法查,新手要学会,不要有抵触心理就可以了,查起来比其它方法容易多了。快捷键win+r,或者点击电脑左下角开始,运行。然后输入cmd,这个就

2023年5月26日 10:20

keep back(关于keep的短语【初中】)

keep back(关于keep的短语【初中】)

本文目录关于keep的短语【初中】请问keep back和keep from 都有阻止的意思,有什么区别吗keep back是什么意思keep+副词吗keepback的意思keepback的意思是什么“keep back”是什么意思keep

2024年6月28日 07:17

linux命令行界面怎么退出(linux中head-v怎么退出)

linux命令行界面怎么退出(linux中head-v怎么退出)

本文目录linux中head-v怎么退出在linux的终端怎么退出python命令行linux中head-v怎么退出linux中head-v可以通过按下键盘上的Ctrl和C键来退出。根据查询相关公开信息显示,Ctrl和C组合键可以强制终止当

2024年4月10日 03:15

jquery修改css属性值(jquery修改css问题)

jquery修改css属性值(jquery修改css问题)

各位老铁们好,相信很多人对jquery修改css属性值都不是特别的了解,因此呢,今天就来为大家分享下关于jquery修改css属性值以及jquery修改css问题的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!本文目录j

2024年7月30日 08:50

站长之家域名(查询域名所有权属于自己的方法)

站长之家域名(查询域名所有权属于自己的方法)

本文目录查询域名所有权属于自己的方法站长之家怎么查询关键词在百度的排名如何知道自己网站在某个关键词搜索中,在百度搜索排名的位置如何查询一个网站下的所有的二级域名知道IP地址如何查询域名(网站的域名)查询域名所有权属于自己的方法查询域名所有权

2024年7月3日 21:50

warning是什么意思中文(电脑中WARNING:Battery is low是啥意思)

warning是什么意思中文(电脑中WARNING:Battery is low是啥意思)

本文目录电脑中WARNING:Battery is low是啥意思warning是什么牌子电脑中WARNING:Battery is low是啥意思电脑中WARNING:Battery is low翻译成中文的意思为:警告:电池电量低!ba

2024年7月13日 15:50

近期文章

beside(“beside”怎么读)
2024-09-28 14:41:21
本站热文

iphone vpn设置(ios设置vpn快捷开关)
2024-07-22 15:01:12 浏览:2334
windows12正式版下载(操作系统Windows Server 2012 R2,在哪能下载到,公司用的)
2024-07-20 17:26:53 浏览:1731
java安装教程(win10如何安装JAVA)
2024-07-19 19:55:49 浏览:1156
client mfc application未响应(每次进cf就提示client MFC Application未响应该怎么办啊!急急急)
2024-07-20 11:15:58 浏览:1152
标签列表

热门搜索