文件流操作之C版

最近这段时间因为学校的课程安排,老是碰到文件操作的问题,虽然早已经是学过了,可每次用起来还是觉得不够扎实啊,碰到某些郁闷的问题还是得翻书,感觉很是不爽,于是花时间把有关文件操作的知识点回顾一遍。因为C的文件流操作是基础,也是最先学的,所以在这就先对C的文件流梳理下吧。

我们知道,按数据结构的组织形式,文件分为文本文件和二进制文件,这两种文件的读写方式有一定的区别,用的时候也是需要特别注意的。因为大多数情况下,我们用到的也就是这两种类型的文件操作,所以在这里只讨论有关这两种文件的有关操作了。

文件操作步骤:
(1)打开文件
(2)读或写文件
(3)关闭文件

1.文件的打开与关闭
C中可以用FILE来定义文件变量或文件指针变量,分别用于保存文件信息或指向不同的文件信息区。定义形式:FILE *fp;

文件打开函数:
FILE *fp = fopen(char *fileName, char *type);
fileName:文件路径名
type:打开文件方式

常用打开文件方式:(够详细了吧)

类型 含义 文件不存在 文件存在
r 以只读方式打开文本文件 返回错误信息 打开文件
w 以只写方式打开文本文件 建立新文件 打开文件,原文件清空
a 以追加方式打开文本文件 建立新文件 从文件尾追加数据
r+ 以读/写方式打开文本文件 返回错误信息 打开文件
w+ 以读/写方式打开新文本文件 建立新文件 打开文件,原文件清空
a+ 以读/写方式打开文本文件 建立新文件 打开文件,读/写文件数据
rb 以只读方式打开二进制文件 返回错误信息 打开文件
wb 以只写方式打开二进制文件 建立新文件 打开文件,原文件清空
ab 以追加方式打开二进制文件 建立新文件 从文件尾追加数据
rb+ 以读/写方式打开二进制文件 返回错误信息 打开文件
wb+ 以读/写方式打开新二进制文件 建立新文件 打开文件,原文件清空
ab+ 以读/写方式打开二进制文件 建立新文件 打开文件,读/写文件数据

注意:
当文件打开时,文件指针一般是指向文件字节流的开始处,所以在选择以“a+”方式打开文件时一定要注意,若第一次对文件流进行读操作,第二次进行写操作前,必须将文件指针定位到文件尾,否则写入的数据会覆盖以前的数据;若第一次对文件流进行写操作,第二次进行读操作前,也必须将文件指针定位到要读取的开始位置。即若要改变上一次对文件的操作,则需要对文件指针重新定位。

文件关闭函数:
fclose(fp);

文件的顺序读写
2.1 字符读写函数
从文件中读一个字符:char ch = fgetc(fp);
向文件中写一个字符:fputc(ch, fp);
2.2 字符串读写函数
从文件中读取字符串:fgets(str, n, fp);
向文件中写入字符串:fputs(str, fp);
2.3 格式化读写函数
格式化读取字符串:fscanf(FILE *fp, char *str, &s1, &s2,...);
格式化写入字符串:fprintf(FILE *fp, char *str, s1, s2, ...);

文件的随机读写
即对文件中的指定位置的信息进行读写操作,所以在这里就需要对文件进行定位了。

3.1 文件定位函数
int fseek(FILE *fp, long m, int n);
这个函数是说明把指针移动到距n为m个字节处,其中m>0表示向文件尾移动,m<0表示向文件头移动。

3.2 位置函数
long int ftell(FILE *fp);
这个函数是取得指针所指向位置距离文件头的偏移量。

3.3 重定位函数
void rewind(FILE *fp);
这个函数是将文件指针重新指向文件的开始处。

3.4 随机读取函数
int fread(void *buf, int size, int count, FILE *fp);

3.5 随机写入函数
int fwrite(void *buf, int size, int count, FILE *fp);


文件操作错误检测
判断文件流是否错误:int ferror(FILE *fp);
判断是否到达文件尾:int feof(FILE *fp);

不知不觉都1点多了,还是先睡了吧。。。
有关重点的C++文件操作,待续。。。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值