- 什么是文件?C语言中文件如何存储的?
- 什么是文本文件和二进制文件?
- 如何打开、关闭文件?
- 如何编写文件读写程序?
- 如何编程程序,实现文件数据处理?
文件通过把数据存储在磁盘文件中,得以长久保存,当由大量数据输入时,可通过编辑工具是事先简历输入数据文件,程序运行时将不再从键盘输入,而从指定的文件上的呼入,从而实现数据一次输入多次使用。当有大量数据输出时,可以将其输出到知道那个文件,不受屏幕大小限制,并且任何时候都可以查看结果文件。
#include<stdio.h>
#include<stdlib.h>
int main(){
FILE *fp;
long num;
char stname[20];
int i,score,avg_score=0;
if((fp=fopen("E:\\test.txt","r"))==NULL){
printf("File open error!\n");
exit(0);
}
for(i=0;i<5;i++){
fscanf(fp,"%ld%s%d",&num,stname,&score);
avg_score+=score;
printf("%ld %s %d\n",num,stname,score);
}
printf("Average score:%d\n",avg_score/5);
if(fclose(fp)){
printf("Can not close the file!\n");
exit(0);
}
return 0;
}
文本文件和二进制文件
- 按数据存储的编码形式,数文件可分为文本文件和二进制文件两种。
- 文本文件是以字符ASCII码值进行村相互与编码的文件,文件内容就是字符
- 二进制文件是存储二进制数据的文件
- C语言把文件看作数据流,并将数据按顺序以一维方式组织存储,根据数据存储的形式,文件数据流又分为字符流和二进制流,前者是文本文件,后者是二进制文件。
文件结构
- FILE *fp;定义了一个FILE结构指针,FILE是语言为了具体实现对文件的操作而定义的一个包含文件操作相关信息的结构类型。FILE类型是用typede重命名的,在头文件stdio.h中定义,使用文件的程序都需要#include<stdio.h>
- typedef自定义类型不是用来定义一些新打数据类型,而是将语言中的已有类型重新命名,用新打名称代替已有的数据类型,用于简化对复杂数据类型定义的描述。typedef <已有类型名> <新类型名>
文件类型指针
- 文件缓冲区是内存中用于数据存储的数据块,在文件处理过程中,程序需要访问该缓冲区实现数据存取,C语言引进FILE文件结构,其成员指针指向文件的缓冲区,通过移动指针实现对文件的操作。
- C语言的文件操作都是勇敢调用标准函数来完成的,由于结构指针的参数传递效率更高,因此C语言文件操作统一以文件指针方式实现。
- FILE *fp;
- 文件指针是特殊指针,指向的是文件类型结构,每一个文件都有自己的FILE结构和文件缓冲区,C语言只是用文件指针fp,用fp代表文件整体。
- 文件指针不像普通指针那样能进行fp++或*fp等操作,fp++将意味着指向下一个FILE结构(如果存在)
文件处理步骤
- 1、定义文件指针
- 2、打开文件:文件指针指向磁盘文件缓冲区
- 3、文件处理:文件读写操作
- 4、关闭文件
打开文件和关闭文件
打开文件fopen(“文件名”,“文件打开方式”)
- 该函数有返回值,如果执行成功,函数将返回包含文件缓冲区等信息的FILE结构地址,赋给文件指针fp。否则返回一个NULL(空值)的FILE指针。
- fopen()的第一个参数文件名一般要指定文件的路径,如果不写出路径,则默认与应用程序的当前路径相同。
- 文件路径若包含绝对完整路径,则定位子目录用的斜杆\,需要用双斜杠\,
- 文件打开方式:
- r:打开文本文件进行只读
- w:建立新文本文件进行只写
- a:打开文本文件进行追加
- r+:打开文本文件进行读/写
- w+:建立文本文件进行读/写
- a+:打开文本文件进行读/写/追加
- rb:打开二进制文本文件进行只读
- wb:建立二进制新文本文件进行只写
- ab:打开二进制文本文件进行追加
- rb+:打开二进制文本文件进行读/写
- wb+:建立二进制文本文件进行读/写
- ab+:打开二进制文本文件进行读/写/追加
打开文件的步骤:
- 在磁盘中找到指定文件
- 在内存中分配保存一个FILE类型结构的单元(16B)
- 在内存中分配文件缓冲区单元(512B)
- 返回FILE结构地址回送给fp
- 文件打开的施之是把磁盘文件与文件缓冲区对应起来,这样后面的文件读写操作只需用文件之后在即可。
- 一旦文件经fopen()正常打开,对该文件的操作方式就被确定,并且直至文件关闭都不变
- C语言允许同时打开多个文件,不同文件采用不同文件指针指示,但不允许同一个文件在关闭前被再次打开
文件关闭操作:
fclose(文件指针)该函数将返回一个整数,若该数为0表示正常关闭文件,否则表示无法正常关闭文件,关闭文件操作除了强制把缓冲区中的数据写入磁盘外,还将释放文件缓冲区单元和FILE结构,使文件指针与具体文件脱钩