fgets函数的返回值是什么(关于C语言fgets()读取文件)
本文目录
- 关于C语言fgets()读取文件
- c语言fgets函数返回值问题,要是读到一串字符的末尾,那么函数返回值是NULL吗还是说只有读取
- fgets函数用法
- c语言中fgets操作方法,求一简单程序示范
- 求助~c语言fgets()怎么写啊
- c语言中的fgets函数
- c语言中fgets函数的返回值,什么情况下返回空指针
- 关于fgets函数 为什么输出AB\nAB,谢谢啦
- 函数返回值是指针
关于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所占用的内存空间现在是自由的了,其他程序可以使用这块内存了,在被其他程序占用修改前,它还是以前的值。但什么时候会改变,谁也不知道,可能很久才会被其他程序占用,也可能立即会被修改,所以,不要返回一个局部变量的地址。
就你这个代码测试一下:
第二次输出就变了
更多文章:
aspireone笔记本(Acer Aspire one超便携迷你笔记本电脑配置怎么样)
2024年9月5日 07:25
一维数组初始化为0(c语言中定义一维数组如果想全部都赋值为0可以写成a[10]={}吗)
2024年7月23日 02:11
大一数据库知识点(Oracle数据库有哪些知识点,请讲全面,不用详细介绍每个知识点)
2024年6月28日 09:04
用户 [yòng hù]什么意思近义词和反义词是什么英文翻译是什么?英语user和costomer作为用户的区别是什么
2024年7月27日 10:35
小白翻译成英语是smallwhite好还是littlewhite好?小白的英文名是什么
2024年7月21日 16:12
swing节奏(像重金属、EDM、Hip-Hop、摇滚等劲爆音乐风格适合什么年龄段的人听)
2024年6月10日 09:10
手机网页翻译日文(我上日本的网站,都是日文看不明白,怎么把他网站的内容直接翻译成中文)
2024年8月22日 19:00
linux命令行界面怎么退出(linux中head-v怎么退出)
2024年4月10日 03:15
warning是什么意思中文(电脑中WARNING:Battery is low是啥意思)
2024年7月13日 15:50