问题描述
- C++下如何从读取文件内的数据并且排序然后输出到另外一个文件
-
如题 大一新手
自学太累了希望有引路人
拜托各位了 谢谢!
解决方案
即便你学会了,写起来也要好多行,建议你用C#吧。实现整个需求只要1行代码就行了:
File.WriteAllLines("输出文件.txt", File.ReadAllLines("文件名.txt").OrderBy(x => 排序条件));
解决方案二:
自学太累?是你没有用心吧。偶也是自学走过来的,非计算机及相关专业。
如果想学好,就不要说什么自学太累!否则,就不要学了。
想自学好,OK,就要一步一步的来练习。这个问题,分解为:
1) 读文件
2)将读到的数据,进行解析,保存为想要的格式
3) 排序
4)将排序结果格式化成字符串
5)写文件。
请问这 5 步,那一步你实现有困难呢?如果有,到时间再来提具体的问题。
解决方案三:
新手不应该这么懒呀,呵呵。
解决方案四:
一次读入一个数组里,然后对数组排序。排序后,保存到一个文本。
lz,这个不是很难的。练练手吧。
解决方案五:
用脚本语言可能更快的,pyhon,啥的
解决方案六:
参考http://blog.163.com/shi_shun/blog/static/23707849200931684635666/
解决方案七:
CFile::Open/Read/Write/Close();
解决方案八:
#include
#include
#include
#include
#pragma warning (disable:4996)
int create_a()//建立一个a.txt文件
{
srand((unsigned int)time(NULL));//通过time产生一个随机的整数,利用这个随机整数与srand的函数产生随机种子
FILE *p = fopen("a.txt", "w");//以只写方式打开a.txt文件
if (p == NULL)
return 0;//如果打开失败,主函数返回
for (int i = 0; i < 10; i++)
{
fprintf(p, "%dn", rand());//将随机数写入文件
}
fclose(p);//操作完成之后关闭文件
return 0;
}
int read_a(int array[], int len)//读取a.txt
{
FILE *p = fopen("a.txt", "r");//用只读方式打开a.txt文件
if (p == NULL)//文件打开失败,主函数返回
return 0;
int i = 0;
while (!feof(p) && len--)//如果读到文件结尾,那么循环退出
{
int value = 0;
fscanf(p, "%d", &value);//从a.txt中读取一行,放入变量value中
array[i] = value;//将value赋值给array[i]
i++;
}
fclose(p);
return i;//返回a.txt文件有多少行
}
void print_array(int array[], int len)//循环遍历数组,将数组每个成员都打印出来
{
for (int i = 0; i < len; i++)
{
printf("array[%d] = %dn", i, array[i]);
}
}
void bubble(int array[], int len)//用冒泡法排序
{
for (int i = 0; i < len; i++)
{
for (int j = 1; j < len - i; j++)
{
if (array[j] < array[j - 1])//如果array[j]小于他前面的元素,那么就和前面的元素调换位置
{
int tmp = array[j];
array[j] = array[j - 1];
array[j - 1] = tmp;
}
}
}
}
int write_b(int array[], int len)//将数组array写入b.txt文件
{
FILE *p = fopen("b.txt", "w");//以只写的方式打开a.txt
if (p == NULL)
return;
for (int i = 0; i < len; i++)//循环将数组中有效元素写入b.txt
{
fprintf(p, "%dn", array[i]);
}
fclose(p);//关闭文件
return 0;
}
int main()
{
int array[100] = { 0 };
int len = read_a(array, sizeof(array) /sizeof(int));//读a.txt文件内容,并保存如数组array
//print_array(array, len);
bubble(array, len);//用冒泡将数组内容排序
//printf("------------------------n");
write_b(array, len);//将排序后数组的结果写入b.txt
getchar();
return 0;
}
解决方案九:
ifsteam,用list保存数据,然后sort排序。