编写一个程序,从data.txt文件读取一批无序的数字,按降序排列后再写到 新文件dataNew.txt文件
如果data.txt文件中的数字形式如下:12,34,56,78,9,45,1,
输出到文件:78,56,45,34,12,9,1,
#include <stdio.h>
#include <iostream>
using namespace std;
#include <algorithm>
#include <vector>
#include <string>
int main()
{
FILE *fp;
fp = fopen("data.txt", "r+");//打开
char ch;
ch = fgetc(fp);
vector<int> arr;
int num = 0;
while (ch != EOF)
{
if (ch == ',')
{
cout << num << endl;
arr.push_back(num);
num = 0;
}
else
{
num = num * 10 + ch - '0';
}
ch = fgetc(fp);
}
fclose(fp);
sort(arr.begin(), arr.end(), greater<int>());
fp = fopen("dataNew.txt", "w+");
cout << arr.size() << endl;
for (int i = 0; i < arr.size(); i++)
{
fprintf(fp, "%d,", arr[i]);
}
fclose(fp);
return 0;
}
#include<iostream>
#include<fstream>
#include<vector>
#include<algorithm>
using namespace std;
int main()
{
fstream ifs;
ifs.open("data.txt", ios::in);
int a;
vector<int> v;
while (ifs >> a) {
v.push_back(a);
}
//sort(v.rbegin(), v.rend());//算法库自带的函数
for (int i = 0; i < v.size() - 1; i++) {//选择排序,也可以其他
for (int j = i+1; j < v.size(); j++) {
if (v[i] < v[j]) {
int t = v[i];
v[i] = v[j];
v[j] = t;
}
}
}
ofstream ot;
ot.open("dataNew.txt",ios::out);
for (int i = 0; i < v.size(); i++) {
ot << v[i]<<" ";
}
return 0;
}