一、文件的打开和关闭
在使用文件的过程中,C程序需要知道这个文件的各种信息,而文件的信息存在于一个结构体变量中,为了方便查找这些信息,需得知该结构体变量的指针,那么这些信息也就方便查找,于是,文件指针因运而生。
文件的打开和关闭借助的是2个函数:
1、fopen()函数
FILE*fopen(const char *filename,const char *mode)
功能:打开文件
参数:要打开文件的文件名 打开方式
返回值:
打开成功:返回该文件的文件指针
打开失败:返回NULL
fopen()参数一:打开方式
打开方式的选择取决于我们对文件即将要进行的操作(只读或只写,或者读和写等),它们具体的选择如下:
接下来,我们重点学习"r"和“w”
打开方式一:“r”——只读
当选择打开方式为”r“,这个fopen()函数的具体作用为:为了输入数据,打开一个已经存在(请注意这个词)的文本文件(后缀为.txt),如果文件文件不存在,fopen()函数会出错,并返NULL
举例:
文件打开失败情况:
我创建了一个test.c文件,这个文件里面即我在vs2022中写的代码,如图:
在这个test.c文件所在的目录中,没有我要打开的data,txt文件,按照”r“只读的规则,该程序会打印出来文件打开失败的内容。
看看运行结果:
大意为不存在该文件
文件打开成功情况:
相反,如果我在这个目录下加入一个data.txt 文件,则程序不会报错,这个文件也会被打开。
新的目录如图:
看看运行结果:
打开方式二:"w"——只写:
当选择打开方式为“w”,这个fopen()函数的具体作用为:为了写入数据,打开一个文本文件,如果文件不存在,则建立一个新的文件,并返回该文件的文件指针。
下面我以目录中不存在要打开的文本文件为例子:
以下为test.c文件所在的目录:
代码如下:
运行结果:
文件被打开成功,说明该C程序自己创建了一个data.txt文件
fopen()参数二:文件名
在文件操作(一)中已经给大家介绍过文件名,以上的例子中,被打开的文件都是在该test.c文件所处的目录当中,但是如果要打开在桌面的文件,那该怎么做?
这里以打开方式为“r"为例:
这个要打开的data.txt文件已经被我拷贝到桌面来,同时test.c文件所在目录中没有该data.txt文件,
代码如图:
运行结果:
文件打开失败,这是为什么?
同样的操作,只是因为data.txt文件所在的位置不同,就产生了截然不同的结果。
这是因为,你输入的文件名如果不包含路径,系统只会在该test.c所在的目录中寻找文件,如果你要找到该目录以外的文件,就要在文件名中包含路径。
具体操作如下:
01.复制文件的位置
02.粘贴到文件名前面
03.添加转义字符'\'
04.运行结果
文件被打开成功
2.fclose()函数
int fclose(FILE *stream)
功能:关闭文件
参数:要关闭文件的文件指针
当我们使用完文件不在使用时,就要把它关闭,就像我们喝汽水一样,要喝的时候打开瓶盖,喝一半不想喝了就可以把瓶盖拧上,对于文件的打开和关闭,也是如此。
例子如下:
int main()
{
//打开文件
FILE*ps=fopen("data.txt","r");
//判断是否打开成功
if(ps==NULL)
{
return 1;
}
//使用......
//关闭文件
fclose(ps);
ps=NULL;
return 0;
}