c++基于流文件输入输出的综合程序设计

2023-12-13 15:03:04
  1. 运行下列程序,分析结果。

#include <iostream>

#include<fstream>

using namespace std;

int main()

{

????fstream out,in;

????out.open("a.dat",ios::out);

????out<<"As a matter of fact,\n";

????out<<"operating file \n";

????out<<"is the same as inputing/outputing data on screen...\n";

????out.close();

????char buffer[80];

????in.open("a.dat",ios::in);

????while(!in.eof())

????{

????????in.getline(buffer,80);

????????cout<<buffer<<endl;

????}

????return 0;

}

当前目录下创建文件a.dat,内容为
As a matter of fact
operating file
is the same as inputing/outputing data on screen...
输入当前目录文件a.dat

2、编写一个程序,读入一个C++语言的源文件,每一行加上行号后保存到另一个后缀为.txt的同名文件中,同时输出到屏幕上。

#include <iostream>
#include <fstream>
using namespace std;


int main()
{
	ifstream fin("实验5.cpp");
	ofstream fout;
	char filename[20] = "实验5.txt";
	fout.open(filename, ios::app | ios::out);
	if (fin.fail() || fout.fail())
	{
		cout << "文件打开失败!";
		return 0;
	}
	//读写文件
	char ch[100];
	while (fin)
	{
		fin.getline(ch, 99);
		cout << ch << '\n';
		fout << ch << '\n';
	}
	fin.close();
	fout.close();
	return 0;
}

3、编写程序,生成一个二进制数据文件,将n~m之间的所有素数写入文件data.dat中。从数据文件中读取二进制数据,并在显示器上以每行10个数的形式显示。

#include <fstream>
#include <iostream>
#include <bitset>
using namespace std;

bool isPrime(int num) {
	if (num < 2) {
		return false;
	}
	for (int i = 2; i <= sqrt(num); ++i) {
		if (num % i == 0) {
			return false;
		}
	}
	return true;
}


int main()
{
	int n, m;
	cout << "请输入开始结束的区间!";
	cin >> n >> m;

	ofstream fout;
	char filename[10] = "data.dat";
	fout.open(filename, ios_base::out | ios_base::binary);
	if (fout.fail())
	{
		cout << "打开文件失败!" << endl;
		return 0;
	}


	for (int i = n; i <= m; ++i)
	{

		if (isPrime(i)) {
			fout.write(reinterpret_cast<const char*>(&i), sizeof(int));
		}

	}
	fout.close();
	
	ifstream fin;
	fin.open(filename, ios_base::in | ios_base::binary);

	if (fin.fail())
	{
		cout << "打开文件失败!" << endl;
		return 0;
	}

	int num, count = 0;

	while (fin.read(reinterpret_cast<char*>(&num), sizeof(int))) {
		std::cout << num << "\t";
		++count;
		if (count % 10 == 0) {
			cout << endl;
		}
	}
	cout << endl;
	fin.close();
	return 0;
}

文章来源:https://blog.csdn.net/toptopniba/article/details/134879477
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。