fgets
SYNOPSIS
#include <stdio.h>
char *fgets(char *s, int size, FILE *stream);
从stream中读取字节到s中,字节多少受到size的限制;
char * s -> 存储位置
int size -> 复制size个字节(*注意*:这里总会在末尾留一个字节给'\0',
以表示一个字符串结束,
这是整套C语言规范框架下的规则,记住就行。
所以如果你想复制size个'Y'字节到另一个地方,
实际上你只复制了size-1个,
还有一个'Y'在stream中躺着,等待你的再一次读取)
FILE * 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()
继续读取的时候是从下一行开始读。(这就是为什么文件操作中还专门有一个'r'
标准位,来表示二进制打开文件,如果你用二进制打开文件,就不会这样换行就不读了)。
(注意:这个栗子是从百度偷来的^_^)