【C++】文件输入并处理动态数组

//输入文件名,文件内第一行为人数,接下来是姓名和金额。
#include<iostream>
#include<fstream> //文件输出,也要用名称空间std;
#include<cstdlib> //支持exit()


struct inflatable //结构体
{
	char name[80];
	double money;
};


int main()
{
	int number,i,j=0,k=0;
	char filename[60];
	using namespace std;
	ifstream inFile; //声明ifstream变量
	cout <<"Please enter filename: ";
	cin.getline(filename,60);
	inFile.open(filename);//将ifstream对象和文件链接起来
	if(!inFile.is_open()) //检查文件是否成功打开
	{
		cout <<"Could not open the file "<<filename<<endl;
		cout <<"program terminating.\n";
		//cin.get();
		exit(EXIT_FAILURE); //终止程序
	}

	cout <<"Please enter donor number:";
	inFile >>number;						//确定动态结构数组的元素数
	inflatable *p_donnor = new inflatable[number];  //声明动态数组
	for(i=0;i<number;i++)						//输入捐献者信息
	{
		cin.get();
		cout <<"Please enter the "<<i+1<<" donnor information:\n";
		cout <<"Patron: ";
		inFile.getline(p_donnor[i].name,80);
		cout <<"Money: ";
		inFile >>p_donnor[i].money;
	}

	if(inFile.eof())     //输入结束检查。结束检查。只能检查时候遇到EOF,遇到返回ture
	{
		cout <<"End of file reached.\n";
	}
	else if(inFile.fail())//输入结束检查。检查类型不匹配和EOF,遇到返回false
	{
		cout <<"Input terminated by data mismatch.\n";
	}

	cout <<"\n\nGrand Patrons:\n";
	for(i=0;i<number;i++)						//筛选重要捐献者
	{
		if(p_donnor[i].money > 10000.0)
		{
			cout <<p_donnor[i].name<<"\t"<<p_donnor[i].money<<endl;
			j++;
		}
	}
	if(j==0)                                 //是否有重要捐献者
		cout <<"  none\n";
	cout <<"\nPatrons:\n";
	for(i=0;i<number;i++)
	{
		if(p_donnor[i].money <= 10000.0)
		{
			cout <<p_donnor[i].name<<"\t"<<p_donnor[i].money<<endl;
			k++;
		}
	}
	if(k==0)
		cout <<"  none\n";
	inFile.close();  //关闭文件
	//cin.get();
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值