fgets的认识

来源:互联网 发布:vb win7 64位 编辑:程序博客网 时间:2024/06/12 18:45

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 HaveSince 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'标准位,来表示二进制打开文件,如果你用二进制打开文件,就不会这样换行就不读了)。
(注意:这个栗子是从百度偷来的^_^)