题目
文件 name.txt 中存储着 5 个字符串数组,存储格式是:先存储数据个数 n n n,接着存储 n n n 个字符串。请设计程序,对这 5 个数组按照升序排序。排序后的结果存入文件 outname.txt 中,还是按照输入时的格式存储。
name.txt :
5 beijing shanghai tianjin wuhan guangzhou
10 black white red blue yellow green pink purple gray orange
8 cat dog chick horse cow sheep bird goose
6 river mountain hill plain lake island
5 integer float double char bool
知识点:
(文件读写问题)如何读入以回车结束的字符串
参考博客:C++中文件流(fstream)的使用方法及示例
代码
#include <iostream>
#include <fstream>
using namespace std;
typedef struct name{
int num;
char s[200];
}NAME;
int main()
{
NAME* members = new NAME[5];
int i,j;
ifstream siFile("name.txt");
for(i=0;i<5;i++)
{
siFile >> members[i].num;
siFile.get(members[i].s,200,'\n');//以回车结束
}
siFile.close();
for (i=0;i<5;i++)
for(j=i+1;j<5;j++)
{
if(members[i].num > members[j].num)
{
NAME m=members[i];
members[i]=members[j];
members[j]= m;
}
}
ofstream soFile("outname.txt");
for(i=0;i<5;i++)
{
soFile << members[i].num;
soFile << "\t";
soFile << members[i].s;
soFile << endl;
}
soFile.close();
delete[]members;
return 0;
}
输出outname.txt
5 beijing shanghai tianjin wuhan guangzhou
5 integer float double char bool
6 river mountain hill plain lake island
8 cat dog chick horse cow sheep bird goose
10 black white red blue yellow green pink purple gray orange