fgets函数
函数名: fgets
功能: 从流中读取一字符串,按行读取
用法: char *fgets(char *string, int n, FILE *stream);gets(待赋值字符串头字节指针, 读入字节长度, 待读取文件的当前指针)
形参注释:*string结果数据的首地址;n-1:一次读入数据块的长度,其默认值为1k,即1024;stream文件指针.
fgets函数用来从文件中读入字符串。fgets函数的调用形式如下:fgets(str,n,fp);此处,fp是文件指针;str是存放在字符串的起始地址;n是一个int类型变量。函数的功能是从fp所指文件中读入n-1个字符放入str为起始地址的空间内;如果在未读满n-1个字符之时,已读到一个换行符或一个EOF(文件结束标志),则结束本次读操作,读入的字符串中最后包含读到的换行符。因此,确切地说,调用fgets函数时,最多只能读入n-1个字符。读入结束后,系统将自动在最后加'\0',并以str作为函数值返回。
从流中读一行或指定个字符,原型是char *fgets(char *s, int n, FILE *stream);从流中读取n-1个字符,除非读完一行,参数s是来接收字符串,如果成功则返回s的指针,否则返回NULL。形参注释:*s结果数据的首地址;n-1:一次读入数据块的长度,其默认值为1k,即1024;stream是文件指针.
读字符串函数fgets函数的功能是从指定的文件中读一个字符串到字符数组中,函数调用的形式为: fgets(字符数组名,n,文件指针); 其中的n是一个正整数。表示从文件中读出的字符串不超过 n-1个字符。在读入的最后一个字符后加上串结束标志'\0'。例如:fgets(str,n,fp);的意义是从fp所指的文件中读出n-1个字符送入 字符数组str中。
fgets函数
fgets()用来从参数stream所指的文件内读入字符并存到参数s所指的内存空间,直到出现换行字符、读到文件尾或是已读了size-1个字符为止,最后会加上NULL作为字符串结束。
使用fgets 函数后, 文件内部的位置指针将向后移动。若已读size-1个字符还没遇到换行字符或文件尾部,则文件位置指针指向第size个字符,否则指向下一行开头或文件的尾部。
fgets函数的功能
从文件结构体指针stream中读取数据,每次读取一行。读取的数据保存在buf指向的字符数组中,每次最多读取bufsize-1个字符(第bufsize个字符赋'\0'),如果文件中的该行,不足bufsize个字符,则读完该行就结束。如果函数读取成功,则返回指针buf,失败则返回NULL。
stream文件流指针体指向文件内容地址的偏移原则
如果使用fgets()读取某个文件,第一次读取的bufsize为5,而文件的第一行有10个字符(算上'\n'),那么读取文件的指针会偏移至当前读取完的这个字符之后的位置。也就是第二次再用fgets()读取文件的时候,则会继续读取其后的字符。而,如果使用fgets() 读取文件的时候bufsize大于该行的字符总数加2(多出来的两个,一个保存文件本身的'\n'换行,一个保存字符串本身的结束标识'\0'),文件并不会继续读下去,仅仅只是这一行读取完,随后指向文件的指针会自动偏移至下一行。
例:
如果一个文件的当前位置的文本如下
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函数的基础知识,主要讲解的是fgets函数和函数说明和fgets函数的功能以及stream文件流指针体指向文件内容地址的偏移原则这四大点的内容。希望能够对大家有较大的帮助,以下还有fgets函数的相关附件,大家多多下载学习!
浏览过本文<fgets函数>的人也浏览了:
函数指针定义
http://baike.cntronics.com/abc/2066
MATLAB取整函数
http://baike.cntronics.com/abc/2086
开环传递函数
http://baike.cntronics.com/abc/2448