c/c++文件操作总结

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): 文件结尾

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值