文件操作(c/c++)

文件操作可以概括为几步:

打开文件,写入文件,读取文件,关闭文件

FILE

FILE 是一个在C语言中用于文件操作的库函数,它提供了一系列函数来实现文件的创建、打开、读取、写入、关闭等操作。FILE 库函数可以帮助开发者处理各种文件操作,如文本文件的读写、二进制文件的读写、文件的定位指针操作等。

我们通过FILE*来把一个指针来指向要处理的文件,如下我们定义了一个名为fp的文件指针

复制代码
FILE* fp;

打开文件

在c语言中我们使用fopen()这个函数来打开文件并赋予其读写权限,让我们通过一个表格来认识所有的权限格式

|------|----|------------------------------------|
| 权限格式 | 权限 | 备注 |
| r | 只读 | 如果文件不存在时会报错 |
| w | 只写 | 文件存在时,会覆盖原有内容;文件不存在时会建立一个新文件 |
| a | 追加 | 文件存在时,会在原有内容的尾部追加内容;文件不存在时会建立一个新文件 |
| r+ | 读写 | 文件不存在时会报错 |
| w+ | 读写 | 文件不存在时会建立新文件 |
| a+ | 读写 | 写入方式是追加写入 |
| 在这写权限格式前加上b(如rb),我们执行的读写操作是以二进制执行的 |||

那么认识到权限以后我们就来讲讲fopen操作

复制代码
/*
格式为:
FILE* fp
fp=fopen(文件名,操作权限);
*/

fp=fopen("data.dat","r");
//以只读方式来打开文件data.dat

char s[10]="data.dat";
fp=fopen("data.dat","r");
//使用字符串数组来表示文件名
//可以执行与第一次打开相同的操作

写入文件

在c语言中我们一般使用fwrite()或者fprintf()这两个函数来向文件中写入内容,两者的区别就在于前者用于二进制处理,所以执行该操作后文件中的内容不能直观的观察出来,因此我们主要介绍fprintf()来对文件写入。

复制代码
FILE* fp;
//定义文件指针

fp=fopen("data.dat","w");
//以写入方式打开文件

int a=5;
fprintf(fp,"%d\n",a);
//向fp指向的文件中写入a

/*
写入格式为
fprintf(文件地址,写入格式,对应格式的数据)
*/

int b[5][5]= {{1},
              {2,3},
              {4,5,6},
              {7,8,9,10},
              {11,12,13,14,15}};
for(int i=0; i<5; i++)
	for(int j=0; j<=i; j++) {
		fprintf(fp,"%d ",b[i][j]);
		if(j==i)
			fprintf(fp,"\n");
	}
//循环读入数组三角形
/*
1 
2 3 
4 5 6 
7 8 9 10 
11 12 13 14 15 
*/

读取文件

读取文件我们使用fscanf()来读取

复制代码
/*
写入格式为
fscanf(文件地址,写入格式,对应格式的数据地址)
*/

FILE* fp;
//定义文件指针

fp=fopen("data.dat","r");
//以读取方式打开文件

int a;
fscanf(fp,"%d",&a);
//读取fp所指文件中第一个数字

int b[5][5];
for(int i=0; i<5; i++)
	for(int j=0; j<=i; j++) {
		fscanf(fp,"%d",&b[i][j]);
	}
//循环读取数组三角形
/*
1 
2 3 
4 5 6 
7 8 9 10 
11 12 13 14 15 
*/

关闭文件

我们在文件操作后,写入的数据内容会寄存在一个缓存区中,在我们关闭文件后,才能让文件转移到内存中,我们使用fclose()来完成这个操作。

复制代码
/*
格式为
fclose(文件地址);
*/

FILE* fp;

fp=fopen("data.dat","r");

fclose(fp);
//关闭fp指向文件

通过这些介绍,相信你已经基本掌握了文件操作。

相关推荐
名字还没想好☜19 分钟前
Java NIO ByteBuffer 实战:flip/clear/compact 三个绕晕人的方法与 position/limit 心智模型
java·开发语言·后端·spring·nio
小溪学编程1 小时前
AQS 原理详解:从 CLH 队列到 ReentrantLock 的实现
java·开发语言
David猪大卫1 小时前
【C++修炼】哈希表的实现
数据结构·c++·笔记·学习·算法·哈希算法·散列表
持敬chijing1 小时前
Web前后端开发-JavaScript 入门教程
开发语言·前端·javascript
广州山泉婚姻1 小时前
列表初始化:C++11全新初始化体系
c++·人工智能
2601_966949651 小时前
从轮询到策略消费:量化系统如何高效处理五档盘口数据
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
莫生灬灬1 小时前
灵码 LingBuilder:用中文写代码,确定性生成真实 C++ 工程(开源)
c++·开源·mfc
浅念-1 小时前
C++ Protobuf 入门实战:基于通讯录项目吃透proto3语法与序列化
linux·服务器·网络·c++·protobuf·proto·proto3
零依赖极客1 小时前
Day 8·1 自注意力机制:Q·K^T/softmax/V的在线计算
c语言·arm开发·人工智能·llama
我命由我123451 小时前
人脸识别 - 去重时间窗口
java·开发语言·python·学习·java-ee·学习方法·python3.11