c++-C++下如何从读取文件内的数据并且排序然后输出到另外一个文件

问题描述

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排序。

时间: 2024-08-27 04:56:43

c++-C++下如何从读取文件内的数据并且排序然后输出到另外一个文件的相关文章

文件中有一组整数,要求排序后输出到另一个文件中

 这个主要复习一下文件输入输出流~~ //文件中有一组整数,要求排序后输出到另一个文件中 #include <iostream> #include <fstream> //文件输入输出流 #include <vector> using namespace std; int main() { ifstream InFile("in.txt"); if(InFile.good()) { cout<<"open file succe

c++-用C++读取文件中特定行的某几列数据并输出到另一个文件

问题描述 用C++读取文件中特定行的某几列数据并输出到另一个文件 AR ZIMM 2014 06 30 00 00 0.000000 2 2.175456910513e-08 1.929140019560e-11AR ZWE2 2014 06 30 00 00 0.000000 2 -6.930289135325e-03 2.317673679230e-11AS G01 2014 06 30 00 00 0.000000 2 1.652894267903e-05 1.737915981300e-

c++ 问题 怎么文本文件中读取特定行的数据进行排序?

问题描述 c++ 问题 怎么文本文件中读取特定行的数据进行排序? 例如我的文件保存格式是这样的: 怎么得到科研时间 和排名的数据 解决方案 行的结束符是回车换行,即 0x0D 0x0A 想读取一行,最简单.原始的方法就是一个字符一个字符读,然后判断是否是回车换行?如果是,则一行结束:否则继续读. 先将数据读取到结构体中,然后想怎么处理就与文件没有关系了.处理完后,再写入文件. 解决方案二: 需读:读而不用.一行一行读下去,读到你要的,进行处理. 解决方案三: 这个地方举个例子,将所有的关于的信息

C# 程序定时向硬盘的csv文件写进数据, 同时 客户会打开此csv文件 怎样使得打开的时候不更新数据 关闭 再下次打开文件时 把期间的数据写进csv文件中去

问题描述 C#程序定时向硬盘的csv文件写进数据,同时客户会打开此csv文件怎样使得打开的时候不更新数据关闭再下次打开文件时把期间的数据写进csv文件中去 解决方案 解决方案二:我就在线等.....解决方案三:http://bbs.csdn.net/topics/320082995不知道上面的帖子能不能帮到你解决方案四:引用2楼yahle的回复: http://bbs.csdn.net/topics/320082995不知道上面的帖子能不能帮到你 没帮到什么还是谢谢解决方案五:我想知道,你是怎么

又是阮一峰:文件和二进制数据的操作 - 从来没这么佩服一个没见过面的人

文件和二进制数据的操作  来自<JavaScript 标准参考教程(alpha)>,by 阮一峰 目录 Blob对象 FileList对象 File对象 FileReader对象 综合实例:显示用户选取的本地图片 URL对象 参考链接 历史上,JavaScript无法处理二进制数据.如果一定要处理的话,只能使用charCodeAt()方法,一个个字节地从文字编码转成二进制数据,还有一种办法是将二进制数据转成Base64编码,再进行处理.这两种方法不仅速度慢,而且容易出错.ECMAScript

文件操作-在C#中,用streamreader链接到一个文件,会把整个文件拷入内存吗?

问题描述 在C#中,用streamreader链接到一个文件,会把整个文件拷入内存吗? 比如StreamReader reader=new StreamReader("./local/mytext") 这样操作的结果是会把整个mytext文件的内容拷贝到内存吗? 如果是,文件很大怎么办?如果不是,文件到底又是如何读取的呢?

帮解决下,谢谢,读数据库中数据,修改后输出

问题描述 数据库中1个表sj共7个列每列存储1-20中的一个数例如列1列2列3列4列5列6列7125793623478912370321读取出来后按照数字填到对应的dataGridView1中的列里去dataGridView1中有列1列2列3列4.........列20读取出来的是2就在列2中显示2看到家有啥实现的办法,初学者,请尽量写明白些,谢谢 解决方案 解决方案二:感觉应该很简单,可怎么我就是想不通呢,呵呵解决方案三://读取数据库中的每一行记录并修改stringstr="DataSour

大神帮帮忙-递归一个文件夹下的所有文件以及文件夹,造成内存溢出问题

问题描述 递归一个文件夹下的所有文件以及文件夹,造成内存溢出问题 我需要递归一个文件夹下所有的文件并进行操纵,文件夹下也有文件夹,我用一个list存储递归得到的所有文件可能会造成溢出.我需要当此list为10000时候执行,然后清空list,请问如何实现.代码如下: static void getFiles(String filePath){ File root = new File(filePath); File[] files = root.listFiles(); for(File fil

link如何对一个文件夹下的数据文件排序,然后将结果汇总到另一个文件里?

问题描述 link如何对一个文件夹下的数据文件排序,然后将结果汇总到另一个文件里? link如何对一个文件夹下的数据文件排序,然后将结果汇总到另一个文件里? 解决方案 给出你的文件内容看看.才好帮到你 解决方案二: 文件夹下是文件,文件本来就有顺序的.如果你是想对文件中的数据进行排序,你需要: 1)懂得文件是如何操作? 2)排序算法对文件的内容如何实施?