目录
一、文件指针:
每一个被使用的文件被打开时都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息。这些信息是保存在一个结构体变量中。该结构体类型是由系统声明的,取名FILE。所以当打开文件的时候应该赋值给一个FILE*类型的指针
FILE*pf;//文件指针变量
pf指向的是某个文件的文件信息区(是一个结构体变量)。通过该文件信息区中的信息就可以访问这个文件,也就是说,通过文件指针变量就能够会遭到与他关联的文件。
二、文件的打开与关闭:
ANSIC规定使用fopen函数打开文件,fclose关闭文件。
不同的打开方式,不同的数据类型对应不同的参数,如下:
文件使用方式 | 含义 | 如果目标文件不存在 |
---|---|---|
“r”(只读) | 为了输入数据,打开一个已经存在的文本文件 | 出错 |
“w“(只写) | 为了输出数据,打开一个文本文件 | 建立一个新的文件 |
“a”(追加) | 像文本尾部追加数据 | 建立一个新的文件 |
“rb”(二进制只读) | 为了输入数据,打开一个已经存在的二进制文本文件 | 出错 |
“wb”(二进制只写) | 为了输出数据,打开一个二进制文本文件 | 建立一个新的文件 |
“ab”(二进制追加) | 向二进制文本尾部追加数据 | 出错 |
“r+”(读写) | 为了读写,打开一个文本文件 | 出错 |
“w+”(读写) | 为了读写,建立一个新的文件 | 建立一个新的文件 |
“a+”(读写) | 打开一个文件,在文件尾部进行读写 | 建立一个新的文件 |
“rb+”(二进制读写) | 为了读写数据,打开一个已经存在的二进制文本文件 | 出错 |
“wb+”(二进制读写) | 为了读写数据,打开一个二进制文本文件 | 建立一个新的文件 |
“ab+”(二进制读写) | 打开一个二进制文件,向二进制文本尾部追加数据 | 建立一个新的文件 |
注 :所谓的输入输出,是以寄存器的视角
代码案例:
#include<stdio.h>
int main()
{
FILE*pf;
//打开文件
pf = fopen("contast.txt","w");
//文件操作
if(pf!=NULL)
{
fputs("hello world",pf);
//关闭文件
fclose(pf);
}
return 0;
}
三、文件的读写函数:
功能 | 函数名 | 适用领域 |
---|---|---|
字符输入函数 | fgetc | 所有输入流 |
字符输出函数 | fputs | 所有输出流 |
文本行输入函数 | fgets | 所有输入流 |
文本行输出函数 | fputs | 所有输出流 |
格式化输入函数 | fscanf | 所有输入流 |
格式化输出函数 | fprintf | 所有输出流 |
二进制输入 | fread | 文件 |
二进制输出 | fwrite | 文件 |
scanf函数是格式化的输入函数(键盘)printf函数是格式化的输出函数(屏幕)所以两者是针对标准输入输出流的格式化输入输出函数。而fscanf和fprintf是针对所有输入输出流(文件流,标准输入输出流)的格式化输入输出函数。