目录
一·为什么使用文件
二·什么是文件
程序文件
数据文件
文件名
二进制文件和文本文件?
三·文件的打开与关闭
流的概念
标准流
文件指针
指针的声明
指针的初始化
四·文件的打开与关闭
打开
fopen()函数
五·总结:
前言:
C语言文件操作是编程中一个非常重要的部分,它允许程序与外部存储设备进行交互,从而实现数据的持久化存储。
在上一章节讲解动态内存,习题练习。
在本章节为大家带来的是文件操作。。
一·为什么使用文件
文件提供了一种简单而有效的持久数据存储和交换机制,这是使用文件最主要的原因:存储持久数据。
文件可以用于持久地存储数据,即使程序终止或计算机重新启动,文件中的数据也会保留。这提供了一种数据存储的方式,从而保证了数据的安全性和可靠性。
如果没有文件,我们写的程序的数据是存储在电脑的内存中,如果程序退出,内存回收,数据就丢失了,等再次运行程序,是看不到上次运行程序的数据的,如果要将数据进行持久化的保存,我们可以使用文件。
二·什么是文件
文件是计算机系统中用来存储和组织数据的基本单位。 磁盘上的文件是文件。
但是在程序设计中,我们一般谈的文件有两种:程序文件、数据文件(从文件功能的角度来分类的)
程序文件
程序文件包括源程序文件(.c)
,目标文件(windows
环境后缀为.obj
),可执行程序(windows
环境后缀为.exe
)。
数据文件
文件的内容不一定是程序,而程序运行时读写的数据,比如程序运行需要从中读取数据的文件,或者输出内容的文件。本小节讨论的是数据文件在以前各章所处理数据文件的输入输出都是以终端为对象的,即从终端的键盘输入数据,运行到显示器上。其实有时候我们会把信息输出到磁盘上,当需要的时候再从数据读取到内存中使用,这里处理的就是磁盘上的文件。
文件名
一个文件要有一个唯一的文件标识,以便用户识别和引用。 文件名包含3部分:文件路径+文件主干+文件后缀 注:文件名主干不能包含以下非法字符: \ / : * ? " < > |
例如:D:\CSDN\test.txt
文件路径:D:\CSDN\
文件主干:test
文件后缀:.txt
二进制文件和文本文件?
根据数据的组织形式,数据文件被称为文本文件或者二进制文件。
数据在内存中以二进制的形式存储,如果不加转换的输出到外存的文件,则需要在存储前转换。以ASCll
字符的形式存储的文件就是文本文件。
这个就是在VS中选择不同的打开方式结果也会不同
那一个数据在内存中是怎么存储的呢? 字符一律以ASCll
形式存储,数值型数据可以用ASCll
形式存储,也可以使用二进制形式存储。
如有整数10000
,如果以ASCll
码的形式输出到磁盘,则磁盘中占用5
个字节(每个字符一
个字节),而二进制形式输出,则在磁盘上只占4
个字节(VS2019
测试)。
三·流的概念
在C语言中,对文件的访问是通过流的概念来实现的。流是程序和文件之间的数据传输通道。当程序打开一个文件时,系统会创建一个流与之关联。
- 输入流:数据从外部流向程序(读取)
- 输出流:数据从程序流向外部(写入)
标准流
那为什么我们从键盘输入数据,向屏幕上输出数据,并没有流呢? 那是因为C语言程序在启动的时候,默认打开了3
个流:
stdin
- 标准输入流,在大多数的环境中从键盘输入,scanf函数就是从标准输入流中读取数据。stdout
- 标准输出流,大多数的环境中输出至显示器界面,printf函数就是讲信息输出到标准流中stderr
- 标准错误流,大多数的环境中输出到显示器界面。
这是默认打开了这三个流,我们使用scanf ,printf等函数就可以直接进行输入输出操作的。 stdin,stdout,stderr三个流的类型是FILE*,通常称为文件指针。 C语言中,就是通过FILE*
的文件指针;来维护流的各种操作的。
文件指针
指针的声明
FILE *fp; // fp是一个指向FILE结构体的指针变量
指针的初始化
通过fopen()
函数初始化:
fp = fopen("example.txt", "r"); // r表示只读模式
if (fp == NULL) {perror("无法打开文件");exit(EXIT_FAILURE);
}
四·文件的打开与关闭
打开
fopen
是C语言中用于打开文件的函数。
原型:
fopen()函数
FILE *fopen(const char *filename, const char *mode);
·第一个为文件名filename,第二个是打开的方式mode
常用打开模式:
模式 | 描述 |
---|---|
"r" | 只读方式打开文本文件 |
"w" | 只写方式创建/覆盖文本文件 |
"a" | 追加方式打开/创建文本文件 |
"rb" | 只读方式打开二进制文件 |
"wb" | 只写方式创建/覆盖二进制文件 |
"ab" | 追加方式打开/创建二进制文件 |
"r+" | 读写方式打开文本文件 |
"w+" | 读写方式创建/覆盖文本文件 |
"a+" | 读写方式打开/创建文本文件 |
例如:
FILE *pf = fopen("example.txt", "r");
fclose
是C语言中用于关闭文件的函数。
原型:
int fclose(FILE *stream);
stream是指向FILE类型的指针,即要关闭的文件的指针
fclose函数用于关闭先前由fopen、freopen或tmpfile打开的文件。
FILE *fp = fopen("test.txt", "w");
if(fp == NULL) {printf("无法打开文件\n");return -1;
}
// 进行文件操作...
fclose(fp);
五·总结:
C语言的文件操作通过流的概念实现,提供了丰富的函数来满足不同的需求。理解文本文件和二进制文件的区别对于正确选择操作方式至关重要。
本章节到此结束了,如果对你们有所帮助的话可以关注一手,下一章节继续为大家带来文件操作的讲解。
下篇再见!!!