C/c++语言文件操作
程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放通过文件可以将数据持久化C++中对文件操作需要包含头文件可以用来捏数据来测试算法,用随机数来生成数据规模比较大的数据,因为数据太大是不好复制粘贴去测试算法的,所以就把数据写入到文件中,以读文件的方式来测试算法,这里的格式还可以有很多种,我这里就写了几种。
·
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
前言
程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放
通过文件可以将数据持久化
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;
}
读取的上面有
总结
可以用来捏数据来测试算法,用随机数来生成数据规模比较大的数据,因为数据太大是不好复制粘贴去测试算法的,所以就把数据写入到文件中,以读文件的方式来测试算法,这里的格式还可以有很多种,我这里就写了几种。
更多推荐
所有评论(0)