提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放

通过文件可以将数据持久化


C++中对文件操作需要包含头文件<fstream>

一、文本文件

1.写文件

#include <bits/stdc++.h> 
int main(){
	FILE *fp1;
	int num1 = 10;

	fp1 = fopen("filename", "w");//当前程序代码和文件在一个文件夹内
	if(fp1 == NULL) {
	   //打开文件失败
	} 
	fprintf(fp1, "%d", num1);//可以空指输入的程序
	fclose(fp1);
}

2.读文件

#include <bits/stdc++.h> 
int main(){
	FILE *fp;	
	int num;
	fp = fopen("filename", "r");//当前程序代码和文件在一个文件夹内
	if(fp == NULL) {
	   //打开文件失败
	} 
	int i = 0;
	int nums[100];
	while(fscanf(fp, "%d", &nums[i]) != EOF) //可以控制读取的形式 
	{ 
	    printf("%d ", nums[i]);
	    i++;
	}
	fclose(fp);
}

二、二进制文件

二进制方式写文件主要利用流对象调用成员函数write

1.写文件

#include <bits/stdc++.h>
int main(){
	FILE *fp1;
	int num1 = 10;
	
	fp1 = fopen("name", "wb");
	if(fp1 == NULL) {
	   //打开文件失败
	} 
	fwrite(&num1, sizeof(int), 1, fp1);
	fclose(fp1);
	return 0;
} 

2.读文件

二进制方式读文件主要利用流对象调用成员函数read

#include <bits/stdc++.h>
int main(){
	FILE *fp;
	int num;
	
	fp = fopen("name", "rb");
	if(fp == NULL) {
	   //打开文件失败
	} 
	fread(&num, sizeof(int), 1, fp);
	printf("%d", num);
	fclose(fp);
	return 0;
} 

应用

字符串生成

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
 
int N;//捏数据值字符串 
int main()
{
	scanf("%d", &N);
	srand(time(NULL));//随机数
	FILE *src = fopen("numbers.txt","w+");
	
	setvbuf(src, NULL, _IONBF, 0);//设置缓冲模式为无缓冲
 
	for(int i = 0; i < N; i++)
	{
		char c = 'A' + rand()%3;
		fprintf(src ,"%c", c);//写入随机数
	}
	fprintf(src ,"\0", 'c');
	fclose(src);
	return 0;
}

四种c++读取字符串的方式

#include <fstream>
#include <string>
const int N = 100010;
char buf[N];
void test01()
{
	ifstream ifs;
	ifs.open("numbers.txt", ios::in);

	if (!ifs.is_open())
	{
		cout << "文件打开失败" << endl;
		return;
	}

	//第一种方式

	//while (ifs >> buf)
	//{
	//	cout << buf << endl;
	//}

	//第二种

	//while (ifs.getline(buf,sizeof(buf)))
	//{
	//	cout << buf << endl;
	//}

	//第三种
	//string str;
	//while (getline(ifs, buf)) //每次读取一行
	//{
	//	cout << buf << endl;
	//}

	char c;//最后一种方法不推荐
	while ((c = ifs.get()) != EOF)
	{
		cout << c;
	}

	ifs.close();


}

int main() {
	test01();

	system("pause");

	return 0;
}

整型数据生成

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){ 
	FILE *fp;
	int max_num = 100; //最大随机数值
	int total_num = 10; //要生成的随机数个数
//	cin >> max_num >> total_num; //也可以自己输入 
	fp = fopen("text1.txt", "w+"); //打开文件
	if (fp == NULL) 
	{
	    printf("Failed to open the file.\n");
	} 
	else 
	{
		srand(time(NULL)); //初始化随机数种子
	    for (int i = 0; i < total_num; i++) 
		{
			
			int tem = rand() % max_num + 1; 
	        fprintf(fp, "%d ", tem); //写入文件
	    }
	}
	fclose(fp); //关闭文件
	return 0; 
}

读取的上面有

总结

可以用来捏数据来测试算法,用随机数来生成数据规模比较大的数据,因为数据太大是不好复制粘贴去测试算法的,所以就把数据写入到文件中,以读文件的方式来测试算法,这里的格式还可以有很多种,我这里就写了几种。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐