您的位置:首页 > 编程语言 > C语言/C++

c/c++文件操作总结

2017-02-17 15:18 204 查看
1、FILE

         FILE是一个结构体,记录了文件的相关信息,其在stdio.h中定义如下:

         struct _iobuf

          {

                char*_ptr;

                int  _cnt;

                char*_base;

                int  _flag;

                int  _file;

                int  _charbuf;

                int  _bufsiz;

                char*_tmpfname;

        };

         typedef struct _iobuf FILE;
2、EOF

         EOF在stdio.h中被定义为-1,只是一个返回值,当fgetc()等函数遇到错误或者遇到文件尾时都会返回此值,因此不能凭此返回值判断是否遇到了文件尾。判断是否遇到文件尾的正确做法是使用feof函数。

3、feof函数

         声明在stdio.h中,函数原型为:int feof(FILE *stream)

         其作用是判断文件当前指针所指的位置是否为文件尾(假如文件最后一个字符的指针为p,则p+1的位置就会被判定为文件尾),是则返回非零值,否则返回零值。

4、fgetc函数

         声明在stdio.h中, 函数原型为:int fgetc(FILE * stream)

         其作用是获取文件当前指针所指向的字符,若成功则将文件当前指针向后移动一个字节以指向新字符,并返回刚刚获取到的字符;若失败或者文件当前指针指向文件尾,则返回EOF(-1)。

5、fgets函数

         声明在stdio.h中, 函数原型为:char *fgets(char *buf, int bufsize, FILE *stream)

         其作用是读取从文件当前指针所指字符开始的bufsize-1个字符,并在末尾添加一个‘0’后拷贝到buf中,最后将文件当前指针指向下一个未读的新字符。但若未读满bufsize-1个字符前遇到了换行符(特指Unix下的换行符‘\n’)或者文件尾,则结束此次读取,后续操作一样(‘\n’不会被丢弃,也会被拷贝到buf中,文件指针会指向‘\n’后的新字符;但若是文件尾,则文件指针就指向文件尾,会使下次读取返回NULL)。这里的bufsize就是buf的大小。若成功则返回buf,若失败或者读取的第一个字符就是文件尾则返回NULL。

6、fseek函数

         声明在stdio.h中,函数原型为:int fseek(FILE *stream, long offset, int fromwhere)

         其作用是将文件当前指针重新指向从fromwhere偏移offset个字节的地方。成功返回0,失败返回-1。

         其中offset为正值则向后偏移,为负值则向前偏移。fromwhere值及其含义为:

         SEEK_SET(0): 文件开头

         SEEK_CUR(1): 当前位置

         SEEK_END(2): 文件结尾
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息