文件操作(一)——文件简介与文件的打开方式和关闭

文章目录

        前言

        1.文件简介

        2.文件打开函数fopen

                2.1 文件类型指针(简称文件指针)

                2.2 文件打开方式

                2.3 文件的路径——相对路径与绝对路径

        3.文件关闭函数fclose

        4.打开文件实例

前言

        我们在运行程序的时候会输入一些数据,而在我们关闭程序运行后,输入的数据将会丢失,我们怎样才能将输入的数据存储起来,在下次运行程序的时候,能够调用上一次的数据,这里我们就能想到将数据存储到文件当中,下次打开程序就可以调用文件中存储的信息。

文件简介

        磁盘上的文件是文件,有时候我们会把信息输出到磁盘上,当需要的时候再从磁盘上把数据读取到内存中使用,这里处理的就是磁盘上文件。

        程序文件:包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序                    (windows环境后缀为.exe)。

        数据文件:文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数                 据的文件,或者输出内容的文件。

        文件跟人一样,怎样才能找到文件,而文件名就是文件的唯一标识,以便用户识别和调用,构成文件名的3部分:文件路径+文件名主干+文件后缀        例如:c:\code\test.txt

其中        c:\code\test为文件路径

                test:为文件名主干

                .txt:为文件后缀

文件打开函数 - fopen

FILE * fopen ( const char * filename, const char * mode )

 实现打开文件的功能  ,相应参数:     

 const char * filename:需要打开文件的路径        const char * mode:文件打开方式

文件指针

         缓冲文件系统中,关键的概念是“文件类型指针”,简称“文件指针”。每个被使用的文件都在内存中开辟了一个相应的文件信息区,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置等)。这些信息是保存在一个结构体变量中的。该结构体类型是有系统声明的,取名FILE

        每当打开一个文件的时候,系统会根据文件的情况自动创建一个FILE结构的变量,并填充其中的信息,使用者不必关心细节。而每当调用fopen函数,如果打开成功就会返回一个FILE类型的指针,一般都是通过一个FILE的指针来维护这个FILE结构的变量,这样使用起来更加方便,如果打开不成功就会返回一个NULL。

文件打开方式

文件使用方式 含义 如果指定文件不存在
“r”(只读) 为了输入数据,打开一个已经存在的文本文件 出错
“w”(只写) 为了输入数据,打开一个文件文本 建立一个新的文件
“a”(追加) 向文本文件尾添加数据 建立一个新的文件
“rb”(只读) 输入数据到内存,读取文件中的二进制内容 错误
“wb”(只写) 输出数据到文件中,将内存中的内容以二进制形式写入文件 建立一个新文件
“ab”(追加) 向一个二进制文件追加数据,追加的数据也会转化为二进制 错误
“r+”(读写) 为了读和写,打开一个文本文件 错误
“w+”(读写) 为了读和写,建立一个新文件 建立一个新文件
“a+”(读写) 打开一个文件,在文件尾进行读写 建立一个新文件
“rb+”(读写) 为了读和写打开一个二进制文件 出错
“wb+”(读写) 为了读和写新建一个二进制文件 建立一个新文件
“ab+”(读写) 打开一个二进制文件,在文件尾进行读和写 建立一个新文件

1.例:向文件写入数据

FILE* pf = fopen("d:\\users\\rich\\桌面\\test.txt", "w");

注:若在d:\\users\\rich\\桌面\\test.txt路径下文件夹test.txt不存在,会直接创建该文件夹。

2.例:取出文件中的数据

FILE* pf = fopen("d:\\users\\rich\\桌面\\test.txt", "r");

注:若在d:\\users\\rich\\桌面\\test.txt路径下文件夹test.txt不存在,fopen函数会返回一个空指针。

3.例:向文件夹写入二进制内容

FILE* pf = fopen("d:\\users\\rich\\桌面\\test.txt", "wb");

注:若在该路径下的该文件夹中有内容存在,再次写入时会将文件原本的内容删除后再写入我所需要写入的内容。

        由于fopen函数有可能返回空指针,在返回空指针的时候则无法访问所需要访问的文件,因为有可能该文件不存在,所以在使用fopen函数的时候需要判断其返回值是否为空指针。

if (pf == NULL)
{
    printf("%s\n", strerror(errno));        //方法一
	perror(NULL);			                //方法二
	return 1;                               //失败则返回结束程序
}

检测出为空指针打印错误:

文件路径

相对路径:此处简单理解为在存放代码的文件中直接创建的文本

FILE* pf = fopen("test.txt", "w");

        若原本文本不存在,在进行写操作的时候,会在存放代码的文件夹中自行创建一个名为test.txt的文本,在存放代码的文件夹中即可查看到。

绝对路径:没有在存放代码的文件夹中,比如我在桌面创建了一个test.txt的文本,右键单击属性,在位置一栏中就可以查看到路径,复制该路径,复制的路径中只要一个斜线,需要再加一个斜线将其转义,并添加上文本名,如下: 

FILE* pf = fopen("d:\\users\\rich\\桌面\\test.txt", "r");

文件关闭函数 - fclose 

int fclose ( FILE * stream );

        由于编译器打开文件数量的窗口有限,为了不浪费资源,在打开文件并完成需要的操作后需要将文件关闭。在使用时需要传文件指针。

    fclose(pf);    //关闭pf指向的文件
    pf = NULL;     //指针pf仍然存放着指向文件的地址,需要及时置空,不然会生成野指针,这样很危险

正确实例:向文件写入字符串“abcdef”

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <errno.h>

int main()
{
	//打开文件
	FILE* pf = fopen("d:\\users\\rich\\桌面\\test.txt", "w");

	//判断是否打开成功
	if (pf == NULL)
	{
		printf("%s\n", strerror(errno));
		//perror(NULL);			//判断错误
		return 1;
	}

    //对文件夹的操作,见下一章详解
	fputs("abcdef", pf);

	fclose(pf);
	pf = NULL;

	return 0;
}

        成功写入:

猜你喜欢

转载自blog.csdn.net/m0_64616721/article/details/125944533
今日推荐