文件的相关操作

1 文件的打开和关闭

FILE *fopen(char *filename, char *type);

    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
          字符                含义
    ────────────────────────────
           "r"           打开文字文件只读
           "w"           创建文字文件只写
           "a"           增补, 如果文件不存在则创建一个
           "r+"          打开一个文字文件读/写
           "w+"          创建一个文字文件读/写
           "a+"          打开或创建一个文件增补
           "b"           二进制文件(可以和上面每一项合用)
           "t"           文这文件(默认项)
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━━

int fclose(FILE *stream);

2 文件的顺序输入函数

int fprintf(FILE *stream, char *format, <variable-list>); 
int fputs(char *string, FILE *steam);
int fputc(int ch, FILE *steam);

fprintf() 函数的返回值为实际写入文件中的字节个数,如果写错误, 则返回一个负数;

fputs()函数返回0时表明将string指针所指的字符串写入文件中的操作成功, 返回非0时,  表明写操作失败。

fputc()函数返回一个向文件所写字符的值, 此时写操作成功;  否则返回EOF(文件结束结束其值为-1, 在stdio.h中定义)表示写操作错误。

fprintf( ) 函数中格式化的规定与printf( ) 函数相同,   所不同的只是fprintf()函数是向文件中写入。而printf()是向屏幕输出。

3 文件的顺序输出函数

int fscanf(FILE *stream, char *format, <address-list>); 
char fgets(char *string, int n, FILE *steam);
int fgetc(FILE *steam);

fscanf()函数的用法与scanf()函数相似,  只是它是从文件中读到信息。fscanf()函数的返回值为EOF(即-1), 表明读错误, 否则读数据成功。

fgets()函数从文件中读取至多n-1个字符(n用来指定字符数), 并把它们放入string指向的字符串中, 在读入之后自动向字符串未尾加一个空字符, 读成功返回string指针,失败返回一个空指针。

fgetc()函数返回文件当前位置的一个字符,  读错误时返回EOF。

4 文件的随机读写函数

int fseek (FILE *stream, long offset, int fromwhere);
int fread(void *buf, int size, int count, FILE *stream);
int fwrite(void *buf, int size, int count, FILE *stream);
long ftell(FILE *stream);

fseek()函数的作用是将文件的位置指针设置到从fromwhere开始的第offset字节的位置上, 其中fromwhere是下列几个宏定义之一: 

文件位置指针起始计算位置fromwhere
━━━━━━━━━━━━━━━━━━━━━━━━━━━
    符号常数        数值           含义
───────────────────────────
    SEEK_SET          0        从文件开头
    SEEK_CUR          1        从文件指针的现行位置
    SEEK_END          2        从文件末尾
━━━━━━━━━━━━━━━━━━━━━━━━━━━
offset是指文件位置指针从指定开始位置(fromwhere指出的位置)跳过的字节数。它是一个长整型量, 以支持大于64K字节的文件。fseek()函数一般用于对二进制文件进行操作。当fseek()函数返回0时表明操作成功, 返回非0表示失败。

fread()函数是从文件中读count个字段, 每个字段长度为size个字节, 并把它们存放到buf指针所指的缓冲器中。

fwrite()函数是把buf指针所指的缓冲器中, 长度为size个字节的count个字段写到stream指向的文件中去。随着读和写字节数的增大, 文件位置指示器也增大, 读多少个字节, 文件位置指示器相应也跳过多少个字节。读写完毕函数返回所读和所写的字段个数。

ftell()函数返回文件位置指示器的当前值,  这个值是指示器从文件头开始算起的字节数, 返回的数为长整型数, 当返回-1时, 表明出现错误。

5 feof()和rewind()函数

int feof(FILE *stream);
int rewind(FILE *stream);

feof()函数检测文件位置指示器是否到达了文件结尾,  若是则返回一个非0值, 否则返回0。这个函数对二进制文件操作特别有用, 因为二进制文件中,  文件结尾标志EOF也是一个合法的二进制数,  只简单的检查读入字符的值来判断文件是否结束是不行的。如果那样的话, 可能会造成文件未结尾而被认为结尾, 所 以就必须有feof()函数。

rewind()函数用于把文件位置指示器移到文件的起点处, 成功时返回0;  否则, 返回非0值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值