1.首先这里用的打开方式是带缓冲的打开方式
read/write用户层是没有缓存的,所以称read和write是无缓存的IO,其实对于内核来说还是进行了缓存,不过用户层看不到罢了。fwrite调用write系统调用),因为先把数据写到流缓存,当其满以后或者调用fflush时才填入内核缓存,所以进行了2次的系统调用write。
2.C语言打开方式简单描述:
r:只读,w:只写,a:末尾操作的写。加上“+”就是可读写,加上b就是二进制操作。
3.文件格式和二进制的差异:
广义的二进制包含文件格式,主要是存储的方式不一样,例如65526,二进制存储起来只需要两个字节,而文件格式则需要5个字节。
4.打开的操作列一个表来增强我们的记忆。
打开模式 | 欲操作的文件不存在 | 成功打开之后的指针位置 | 是否清空原先内容 |
---|---|---|---|
r | 打开失败 | 开头 | 否 |
w | 新建 | 开头 | 是 |
a | 新建 | 结尾 | 否 |
r+ | 打开失败 | 开头 | 否 |
w+ | 新建 | 开头 | 是 |
a+ | 新建 | 结尾 | 否 |
5.文件操作补充
(2)文件打开
例:fp=fopen(“D:/文件/文件 1.c”,“r+”); //文件操作权限很重要
(2)读写文件中的数据块
读函数原型 int fread(void *buffer,unsigned size,unsigned count,FILE *fp)
写函数原型 int fwrite(void *buffer,unsigned size,unsigned count,FILE fp)
函数功能 从由 fp 指定的文件中,按二进制形式将 sifecount 个数据读写到由 buffer 指出的数据区中。 函数参数 buffer:这是一个 void 型指针,指出要将读写数据存放在其中的存储区首地址。 size: 指出一个数据块的字节数,即一个数据块的大小尺寸。 count:指出一次读写多少个数据块( sife)。 fp: 这是个文件指针,指出要从其中读写数据的文件。
(3)向文件格式化读写
count=fprintf(fp,"%s",“C 文件操作”); //向文件写入“C 文件操作” printf(“成功写入的个数为=%d\n”,count); //写入的个数
fscanf(fp,"%d",&data); //读出数据
(3)文件读写位置
SEEK_SET 从距文件开头 offset 位移量为新的读写位置。 SEEK_CUR 以目前的读写位置往后增加 offset 个位移量。 SEEK_END 将读写位置指向文件尾后再增加 offset 个位移量
熟记基本的操作,基础打好