文件的相关内容(一)

简介: 文件的相关内容(一)

文件的打开

为什么使用文件?


数据持久化,把数据放在硬盘文件,数据库等方法。


什么是文件?

硬盘上的文件是文件。在程序文件根据功能,文件分为程序文件,数据文件;


程序文件

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


数据文件

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


这一部分主要讲的是数据文件。


文件名

一个文件要有唯一的文件标识,以便用户识别和引用。


文件名包含3部分:文件路径和+文件名主干+文件后缀


例如:c:\code\test.txt


文件的打开和关闭

文件指针

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


在VS2022中FILE的定义为:

微信截图_20230911193426.png

在vs2013中的FILE的定义为:

微信截图_20230911193440.png

用FILE* 类型的指针用来维护FILE结构。


下面我们可以创建一个FILE* 的指针类型,定义pf是一个指向某一文件的文件休息区(是一个结构体变量),通过文件休息区的信息能够访问该文件。文件一旦创建成功,就会创建一个文件信息区,如果文件要扩大,则相对应的文件信息区也要扩大。通过文件指针变量能够找到相对应的文件。文件信息区维护文件。


文件的打开和关闭

文件在读写之前要先打开文件,在使用结束之后关闭文件。


fopen函数的定义:FILE* pf = fopen( const char* filename, const char* mode),第一个参数是要打开的文件名,在第一个参数中有两种路径,一种是绝对路径(类似于C:\Users\HERUIXU\Desktop\test.txt)。一种是相对路径(类似于test,txt),第二个参数是文件的打开形式。


文件的打开模式有:

微信截图_20230911193528.png

微信截图_20230911193544.png

文件打开的代码如下:(文件在打开的时候会出现打开失败的情况,会返回空指针)。

微信截图_20230911193602.png

在打开文件后进行读写文件的操作。

任何一个c程序打开,默认打开3个流:stdin(标准输入流,对应键盘),stdout(标准输出流,对应屏幕),stderr(标准错误流)的类型为FILE*。

微信截图_20230911193648.png

文件的读写

文件的顺序读写

在文件中进行读写操作的函数;这些函数基本上报错后会返回空指针。

微信截图_20230911193701.png

fputc能一个一个读;循环进行读。

微信截图_20230911193742.png

fgetc函数在遇到EOF的时候停下,不在继续往下进行读取。(如果这个ch=fgetc(pf)不单独加括号会出现乱码的情况。)

微信截图_20230911193823.png

微信截图_20230911193830.png

fputs函数: (写一行内容)

在写文件的时候,如果文件中之前有内容的时候,会将原来的内容进行删除,在进行输入操作。

微信截图_20230911193908.png

如果想要在文件内容后进行追加,需要将文件模式改为“a"。

如果在想要在文件中写出两行内容,我们需要加上换行符“\n",如果不加换行符,则会将内容打印在一行上。

微信截图_20230911194003.png

微信截图_20230911194010.png

fgets函数:定义里有三个参数:第一个参数为要将数据放在哪里的指针,第二个参数是要读取几个字符,如果读取5个字符,则只显示4个字符,因为有一个‘\0'。第三个参数是要读取的文件的指针。

微信截图_20230911194022.png

fprintf 函数:类似于printf,只是在前面多了一个指针。

微信截图_20230911194058.png

fscanf函数:类似于scanf,只是在前面多了一个指针。

微信截图_20230911194106.png

fwrite函数:在二进制文本中使用,这个函数有四个参数(参数一是要输入的首地址的指针,参数二是该元素的大小,参数三是该元素的个数,参数四是文件指针。)

微信截图_20230911194156.png

fread函数:参数与fwrite函数的参数相同;

微信截图_20230911194226.png


相关文章
|
6月前
|
容器
查看文件内容命令
查看文件内容命令
53 0
|
6月前
如何快速的追加文章的内容(在不知道内容的情况下)
该内容是一个教程,介绍了如何使用某个工具进行文章编辑和内容追加。首先,提到了工具的获取途径,包括百度网盘和蓝奏云,并给出了相应的提取码。然后,详细步骤如下:1) 打开工具,切换到文章模块(快捷键Ctrl+1);2) 新建文章,命名为“001”;3) 添加内容,如图所示;4) 保存并关闭文章;5) 在新建文章上右键,选择追加内容;6) 选择追加位置(头尾都加);7) 输入内容后关闭,无需保存,内容自动追加;8) 检查结果,显示已成功追加。教程中附有多张操作截图以辅助说明。
|
6月前
|
弹性计算 运维 Shell
向文件中追加内容
【4月更文挑战第29天】
45 2
|
6月前
|
搜索推荐 Linux Shell
目录及文件管理、文本内容操作、grep过滤文件内容
目录及文件管理、文本内容操作、grep过滤文件内容
|
6月前
快速比较两个文件里不同内容的地方
快速比较两个文件里不同内容的地方
151 2
合并多个文件的内容到一个文件
合并多个文件的内容到一个文件
|
11月前
|
Kubernetes Cloud Native 前端开发
分权分域有啥内容?
分权分域有啥内容?
136 0
|
前端开发
文件的相关内容(二)
文件的相关内容(二)
|
存储 C语言 C++
C++内容总结
C++内容总结
150 0
|
开发工具 git
关于https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/的部分内容
关于https://github.blog/2020-12-15-token-authentication-requirements-for-git-operations/的部分内容
80 0