首页源码fgets(玩转Linux系统:学习fgets的使用)

fgets(玩转Linux系统:学习fgets的使用)

编程之家2024-02-1096次浏览

一、fgets函数用法

fgets函数用法就是从指定的流中读取数据,每次读取一行。

fgets(玩转Linux系统:学习fgets的使用)

其原型为char*fgets(char*str,intn,FILE*stream),从指定的流stream读取一行,并且把它存储在str所指向的字符串内。当读取(n-1)个字符时,或者读取到换行符时,或者到达文件末尾时,它会停止,具体视情况而定。

str是指向一个字符数组的指针,该数组存储了要读取的字符串。n是要读取的最大字符数(包括最后的空字符),通常是使用以str传递的数组长度。stream是指向FILE对象的指针,该FILE对象标识了要从中读取字符的流。如果文件中的该行,不足n-1个字符,则读完该行就结束。

fgets函数使用示例

fgets函数用来从文件中读入字符串,fgets函数的调用形式如fgets(str,n,fp)。此处,fp是文件指针,str是存放在字符串的起始地址,n是一个int类型变量。函数的功能是从fp所指文件中读入n-1个字符放入str为起始地址的空间内。

如果在未读满n-1个字符之时,已读到一个换行符或一个EOF(文件结束标志),则结束本次读操作,读入的字符串中最后包含读到的换行符。因此,确切地说,调用fgets函数时,最多只能读入n-1个字符。读入结束后,系统将自动在最后加\0,并以str作为函数值返回。

以上内容参考:百度百科—fgets

fgets(玩转Linux系统:学习fgets的使用)

二、求教c语言中fgets的用法

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

*string结果数据的首地址;n-1:一次读入数据块的长度,其默认值为1k,即1024;stream文件指针fgets的返回值是个指针,*fgets(buffer,100,stdin)就是取返回指针所指向地址的第一个字符,fgets的返回值是char*.要是输入一串字符,返回的第一字符一定不是\n如果要是一个空行,第一个一定是\n,所以会推出循环,如果while中的两个条件都满足,就会进入循环继续计算。

扩展资料:

一、函数原型是: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函数来判断。

fgets(玩转Linux系统:学习fgets的使用)

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

三、功能:

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

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

stream文件流指针体指向文件内容地址的偏移原则

例:

如果一个文件的当前位置的文本如下

Love, I Have

Since you can do it.

如果用fgets(str1,6,file1);去读取

则执行后str1="Love,",读取了6-1=5个字符

这个时候再执行fgets(str1,20,file1)则执行后str1=" I Have\n"

而如果

fgets(str1,23,file1);

则执行str1="Love,I Have",读取了一行(包括行尾的'\n',并自动加上字符串结束符'\0'),当前文件位置移至下一行,虽然23大于当前行上字符总和,可是不会继续到下一行。而下一次调用fgets()继续读取的时候是从下一行开始读。

参考资料:百度百科-fgets

三、C语言里fgets函数怎么用

fgets(由文件中读取一字符串)

表头文件

include<stdio.h>

定义函数

char* fgets(char* s,int size,FILE* stream);

函数说明

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

返回值

gets()若成功则返回s指针,返回NULL则表示有错误发生。

范例

#include<stdio.h>

main()

{

char s[80];

fputs(fgets(s,80,stdin),stdout);

}

执行

this is a test/*输入*/

this is a test/*输出*/

小程序示例(微信小程序入门示例)DMP恢复(Oracle数据库恢复之路DMP方案)