一.为什么使用文件
1.保存数据
如果没有文件,我们编写的程序和数据均储存在电脑的内存中,退出程序时这些内存都会还给操作系统,为了长久地存储数据,我们使用文件保存
二.文件是什么
1.文件的定义
磁盘或者硬盘上的文件称为文件,文件可分为两类,即程序文件和数据文件,本次学习主要学习操作数据文件。
2.二进制文件和文本文件
文本文件:存储文本信息,以ASCII码字符形式存储的文件被称为文本文件
二进制文件:数据在内存中以二进制形式存储,如果不加以任何转化直接输出到文件中,被称为二进制文件,下面以二进制形式将数字100输入文件内
int main()
{
int a = 100;
FILE* pf = fopen("test.txt", "wb");
fwrite(&a, 4, 1, pf);
if (pf == NULL)
{
perror("fopen");
return 1;
}
fclose(pf);
pf = NULL;
return 0;
}
三.文件操作
1.简单流程
打开文件——读写文件——关闭文件
2.数据流
数据流是一个抽象的概念,我们在进行文件操纵时是在流中读取,输出数据,不需要考虑它如何与外部设备串联,提高了操作文件的效率,我们通常使用FILE*进行文件操作
3.文件指针
在每个被使用的文件中,都会创建一个相应的文件信息区,用来存放文件的各种数据,它是一种FILE类型的结构体,用FILE*进行访问,我们可以通过文件指针间接访问文件
4.fopen函数和fclose函数
FILE * fopen ( const char * filename, const char * mode );
其中file name为文件名,mode为文件打开方式,具体如下
1、“r”以只读方式打开一个文件;若文件不存在,报错
2、“w”以只写方式打开一个文件;若文件不存在,创建一个同名文件
3、“a”打开一个文件追加;
4、“rb”以只读方式打开一个二进制文件;
5、“rw”以只写方式打开一个二进制文件;
6、“ra”打开一个二进制文件追加;
7、"r+"以读写方式打开一个文件;
8、“w+”以读写方式建立一个文件;
9、“a+”以读写方式打开一个文件追加;
10、“rb+”以读写方式打开一个二进制文件;
11、“wb+”以读写方式建立一个二进制文件;
12、“ab+”以读写方式打开一个二进制文件追加。
int main()
{
FILE* pf = fopen("test.txt", "wb");//打开文件
if (pf == NULL)
{
perror("fopen");//如果创建失败,返回错误信息
return 1;
}
fclose(pf);//关闭文件
pf = NULL;
return 0;
}
5.文件顺序读写(fgetc fputc fgets fputs)
a.fputc:按字符输入数据
nt fputc ( int character, FILE * stream );
int main()
{
FILE* pf = fopen("test.txt", "wb");
if (pf == NULL)
{
perror("fopen");
return 1;
}
fputc('a', pf);//读入字符
fputc('b', pf);
fputc('c', pf);
fclose(pf);
pf = NULL;
return 0;
}
b.在逐字输入后,我们用fgetc函数逐字输出
int fgetc ( FILE * stream );
int ch = '0';
while ((ch = fgetc(pf)) != EOF)
{
printf("%c ", ch);
}
c.fputs整行输入
int fputs ( const char * str, FILE * stream );
d.fgets整行输出
char * fgets ( char * str, int num, FILE * stream );
其中num为最大读取数,会包含'\0',因此要设置合理
fgets输出时自带输出'\n'
*未完待续*