- 文件的分类
- ASCLL 文件(文本文件),每个字节放一个字符的 ASCLL 代码
- 二进制文件
- 文件缓冲区,不管是从内存到磁盘,还是从磁盘到内存,到需要让数据先传输并停留在这二者之间的缓冲区中。缓冲区的作用是减少对磁盘的访问频率,因为 IO 操作的速度相比于 CPU 的速度是很慢的(大概几十微秒)
- 文件的打开
- fopen 函数,其中第二个参数是打开方式,详见参考书目(注意,只有 w 是在文件不存在时新建文件)
- 不能打开则返回空指针,能打开则返回该文件被调入内存中的地址(指针)
- 文件的关闭
- fclose 用于文件的关闭,其步骤是,将缓冲区的内容全部送入磁盘,然后撤销文件信息区和缓冲区
- 成功则返回 0,否则返回 EOF
- 文件的读写(2,3)


// 1#include <stdio.h>int main(){FILE *fp;fp = fopen("filedemo02.txt","w");if(fp!=NULL)printf("打开成功!");fclose(fp);return 0;}// 2 读写一个字符实例#include <stdio.h>int main(){FILE *fp,*fp2;fp = fopen("filedemo02.txt","w");fp2 = fopen("filedemo02.txt","r+");if(fp!=NULL)printf("打开成功!\n");// 写一个字符char wreturn = fputc('c',fp);printf("写入的字符:%c\n",wreturn);// 写完后要马上关闭fclose(fp);// 读一个字符char rreturn = fgetc(fp2);if(rreturn != EOF)printf("读入的字符:%c\n",rreturn);elseprintf("读取失败");fclose(fp2);return 0;}// 3 读一个字符串#include <stdio.h>int main(){int i=0;FILE *fp;fp = fopen("filedemo02.txt","r");char string[100];fgets(string,100,fp);while(string[i]!='#')printf("%c",string[i++]);return 0;}// 3 写一个字符串#include <stdio.h>int main(){int i=0;FILE *fp;fp = fopen("filedemo02.txt","w");char *string = "这是一个字符串";fputs(string,fp);return 0;}
【注】fopen(“c:\project\test1.dat”,”r”),这样的写法是错误的,因为会把 \t 看作一个被转义的字符,所以我们应该这么去书写 fopen(“c:\project\test1.dat”,”r”)
