首页 > 编程 > C++ > 正文

c/c++文件操作总结

2019-11-08 03:15:03
字体:
来源:转载
供稿:网友

1、FILE

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

         struct_iobuf

          {                char*_ptr;                int  _cnt;                char*_base;                int  _flag;                int  _file;                int  _charbuf;                int  _bufsiz;                char*_tmpfname;        };         typedefstruct _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): 文件结尾


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选