C++程序设计(PEARSON版)第三版13.1答案

(创建一个文本文件)编写程序,它创建一个名为Exercise13_1.txt的文件(若其不存在的话)。如果文件存在,将新数据附加在文件原内容之后。将随机生成的100个整数写入文件(文本I/O方式)。整数间用一个空格分隔。

值得注意的是题目要求每个数字之间空一格,因此在重复读取时,应该使用getline而不是其他的,另一点值得注意的是:文件被加载在原内容之后。

这篇文章有更新!

我对这道题目进行了新的思考,如果每次都像以前的代码一样通过整体替换的方式完成输入输出,会增加内存和CPU的压力,如果我们关注一下文件打开模式里的ios特性,使用ios::app|ios:out来组合操作这次的输入输出,会更加好,下面看看我的新代码:

#include<iostream>
#include<fstream>
#include<ctime>
#include<string>
#include<cstdlib>
using namespace std;
int main()
{
	srand(time(0));
	fstream inout;
	inout.open("Exercise13_1.txt",ios::out|ios::app);
	if(inout.fail())
	{
	cout<<"open failed,creat one."<<endl;
	ofstream inout("Exercise13_1.txt",ios::out|ios::app);	
	}
	for(int i=0;i<100;i++)
		inout<<rand()%100<<" ";
	string a;
	int count=0;
	if(inout.good())
	cout<<"Done"<<endl;
	inout.close();
	ifstream input("Exercise13_1.txt");
	while(!input.eof())
	{
		input>>a;
		if(inout.eof())
		break;
		cout<<a<<" ";
	//	count++;验证是否有多余的写入写出 
	}
	//cout<<endl<<count<<endl;
	return 0;
} 

我们看看可以直接用于交作业的代码:

#include<iostream>
#include<fstream>
#include<ctime>
#include<string>
#include<cstdlib>
using namespace std;
int main()
{
	srand(time(0));
	fstream inout;
	inout.open("Exercise13_1.txt",ios::out|ios::app);
	if(inout.fail())
	{
	cout<<"open failed,creat one."<<endl;
	ofstream inout("Exercise13_1.txt",ios::out|ios::app);	
	}
	for(int i=0;i<100;i++)
		inout<<rand()%100<<" ";
	return 0;
} 

下面是以前的代码:

这个比较简单,我们直接看代码:

下面的代码在Dev-C++上编译通过!

#include<iostream>
#include<fstream>
#include<ctime>
#include<cstdlib>
using namespace std;
int main()
{
	string b;
	ifstream input("Exercise13_1.txt");
	bool Che=input.fail();
	if(input.fail())
	{
	cout<<"Open failed,going create one"<<endl;
	ofstream output;
	output.open("Exercise13_1.txt");	
	}
	else
	{
		while(!input.eof())
		{
		getline(input,b); 
		}
	}
	cout<<b;
	ofstream output;
	output.open("Exercise13_1.txt");	
	srand(time(0));
	if(Che==true)	
	for(int i=0;i<100;i++)
	{
		output<<rand()%1000<<" ";
	}	
	else
	{
		output<<b;
	for(int i=0;i<100;i++)
		{
			output<<rand()%1000<<" ";
		}
	}
	output.close(); 
	cout<<"Done,please check the file"<<endl;
	return 0;
}

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值