【C++】文件输入并处理动态数组
2015-10-21 00:51
302 查看
//输入文件名,文件内第一行为人数,接下来是姓名和金额。 #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; }
相关文章推荐
- C++基类成员函数访问派生类对象的基类成员问题
- C语言读取文件并插入到mysql数据库
- vc++ ado连接数据库
- (二)黑马程序员——c语言之冒泡排序法与选择排序法的使用比较
- C++之floor函数
- 交换两个数内容,不含变量(改)
- leetcode笔记:Recover Binary Search Tree
- 【C++】文件输入iftream
- c++类定义代码的分离
- 在屏幕上打印杨辉三角
- C语言字符格式化输出总结
- [C++] CONST 2
- C++ rand,srand用法
- 归并排序的简单实现(c++ 版本)
- 归并排序的简单实现(c++ 版本)
- 学生成绩管理系统
- 素数的求解(c语言)
- C++_KMP算法的实现
- c语言实现,将整数n这个数字转换为对应的字符串
- C语言模拟java、c#使用try catch