文件的打开
为什么使用文件?
数据持久化,把数据放在硬盘文件,数据库等方法。
什么是文件?
硬盘上的文件是文件。在程序文件根据功能,文件分为程序文件,数据文件;
程序文件
包括源程序文件(后缀为.c),目标文件(windows环境后缀为.obj),可执行程序(windows环境后缀为.exe)。
数据文件
文件的内容不一定是程序,而是程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。
这一部分主要讲的是数据文件。
文件名
一个文件要有唯一的文件标识,以便用户识别和引用。
文件名包含3部分:文件路径和+文件名主干+文件后缀
例如:c:\code\test.txt
文件的打开和关闭
文件指针
缓冲文件系统中,关键概念是“文件指针”,每一个被使用的文件都在内存中开辟了一个文件休息去,用来存放文件的相关信息(如文件的名字,文件状态及文件当前的位置,这些信息是存放在一个结构体变量中的,该结构体是有系统声明的),取名FILE.
在VS2022中FILE的定义为:
在vs2013中的FILE的定义为:
用FILE* 类型的指针用来维护FILE结构。
下面我们可以创建一个FILE* 的指针类型,定义pf是一个指向某一文件的文件休息区(是一个结构体变量),通过文件休息区的信息能够访问该文件。文件一旦创建成功,就会创建一个文件信息区,如果文件要扩大,则相对应的文件信息区也要扩大。通过文件指针变量能够找到相对应的文件。文件信息区维护文件。
文件的打开和关闭
文件在读写之前要先打开文件,在使用结束之后关闭文件。
fopen函数的定义:FILE* pf = fopen( const char* filename, const char* mode),第一个参数是要打开的文件名,在第一个参数中有两种路径,一种是绝对路径(类似于C:\Users\HERUIXU\Desktop\test.txt)。一种是相对路径(类似于test,txt),第二个参数是文件的打开形式。
文件的打开模式有:
文件打开的代码如下:(文件在打开的时候会出现打开失败的情况,会返回空指针)。
在打开文件后进行读写文件的操作。
任何一个c程序打开,默认打开3个流:stdin(标准输入流,对应键盘),stdout(标准输出流,对应屏幕),stderr(标准错误流)的类型为FILE*。
文件的读写
文件的顺序读写
在文件中进行读写操作的函数;这些函数基本上报错后会返回空指针。
fputc能一个一个读;循环进行读。
fgetc函数在遇到EOF的时候停下,不在继续往下进行读取。(如果这个ch=fgetc(pf)不单独加括号会出现乱码的情况。)
fputs函数: (写一行内容)
在写文件的时候,如果文件中之前有内容的时候,会将原来的内容进行删除,在进行输入操作。
如果想要在文件内容后进行追加,需要将文件模式改为“a"。
如果在想要在文件中写出两行内容,我们需要加上换行符“\n",如果不加换行符,则会将内容打印在一行上。
fgets函数:定义里有三个参数:第一个参数为要将数据放在哪里的指针,第二个参数是要读取几个字符,如果读取5个字符,则只显示4个字符,因为有一个‘\0'。第三个参数是要读取的文件的指针。
fprintf 函数:类似于printf,只是在前面多了一个指针。
fscanf函数:类似于scanf,只是在前面多了一个指针。
fwrite函数:在二进制文本中使用,这个函数有四个参数(参数一是要输入的首地址的指针,参数二是该元素的大小,参数三是该元素的个数,参数四是文件指针。)
fread函数:参数与fwrite函数的参数相同;