整型数组处理算法(二)文件中有一组整数,要求排序后输出到另一个文件中

2024-06-16 08:18

本文主要是介绍整型数组处理算法(二)文件中有一组整数,要求排序后输出到另一个文件中,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

如题,需要将文件里的一组整数,排序后写到另外一个文件中。

思路:

一次读取一个sizeof(int),然后往一个int*数组里写入,写入的时候就比较,进行排序。

然后,在遍历数组,写到文件中。


实现代码如下:

#define READ_FILE  "C:\\tempR.txt"
#define WRITE_FILE  "C:\\tempW.txt"/*按降序排列数组*/
int InsertData(int* a, int nValue, int nCount)
{for (int i=0; i<nCount; i++){if (a[i]<nValue){for (int j=nCount-1; j>i; j--){a[j]=a[j-1];}a[i]=nValue;break;//跳出循环}}return 0;
}/*写数据到文件*/
int WriteData(int* a,  char* pFile,int nCount)
{FILE* fpWrite=NULL;fpWrite = fopen(pFile, "wb+");if (fpWrite!=NULL){for (int i=0; i<nCount; i++)fwrite((char*)&a[i], sizeof(int), 1, fpWrite);fclose(fpWrite);}return 0;
}int ProcessData()
{FILE* fpRead =NULL;int nSize=0;int nTemp;int nCount=0;int* a50;//int* a50 = new int[];,这样写会导致R6030 CRT not initialized,错误提示。//这里应该是内存没有申请就使用了。fpRead = fopen(READ_FILE, "rb+");if (fpRead!=NULL){fseek( fpRead, 0L, SEEK_END );int nRet = ftell(fpRead); a50 = new int[nRet/sizeof(int)];fseek( fpRead, 0L, SEEK_SET );//移到文件头nSize = fread((void*)&nTemp, sizeof(int), 1, fpRead);while (nSize>0){nCount++;InsertData(a50, nTemp, nCount);nSize = fread((void*)&nTemp, sizeof(int), 1, fpRead);}fclose(fpRead);}WriteData(a50, WRITE_FILE, nCount);delete a50;a50 = NULL;return 0;
}



int main()
{
/*
//可以执行这个先进行写测试数据到文件int* a=new int[10];for (int i=0; i<10; i++){*(a+i)=i;}WriteData(a, READ_FILE, 10);delete a;a = NULL;
*/ProcessData();return 0;
}

测试结果,就不贴了,有兴趣的朋友可以用代码测试测试,文件是按二进制写的,用UE或其他可以查看二进制的工具打开。


在这个过程遇到R6030 CRT not initialized的问题,才改变算法,先读取文件大小,计算整型数个数。关于为什么会出现R6030 CRT not initialized另外写一篇。


转载请注明原创链接:http://blog.csdn.net/wujunokay/article/details/12040301





这篇关于整型数组处理算法(二)文件中有一组整数,要求排序后输出到另一个文件中的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1065926

相关文章

Java中Switch Case多个条件处理方法举例

《Java中SwitchCase多个条件处理方法举例》Java中switch语句用于根据变量值执行不同代码块,适用于多个条件的处理,:本文主要介绍Java中SwitchCase多个条件处理的相... 目录前言基本语法处理多个条件示例1:合并相同代码的多个case示例2:通过字符串合并多个case进阶用法使用

Java实现优雅日期处理的方案详解

《Java实现优雅日期处理的方案详解》在我们的日常工作中,需要经常处理各种格式,各种类似的的日期或者时间,下面我们就来看看如何使用java处理这样的日期问题吧,感兴趣的小伙伴可以跟随小编一起学习一下... 目录前言一、日期的坑1.1 日期格式化陷阱1.2 时区转换二、优雅方案的进阶之路2.1 线程安全重构2

Java数组初始化的五种方式

《Java数组初始化的五种方式》数组是Java中最基础且常用的数据结构之一,其初始化方式多样且各具特点,本文详细讲解Java数组初始化的五种方式,分析其适用场景、优劣势对比及注意事项,帮助避免常见陷阱... 目录1. 静态初始化:简洁但固定代码示例核心特点适用场景注意事项2. 动态初始化:灵活但需手动管理代

Python处理函数调用超时的四种方法

《Python处理函数调用超时的四种方法》在实际开发过程中,我们可能会遇到一些场景,需要对函数的执行时间进行限制,例如,当一个函数执行时间过长时,可能会导致程序卡顿、资源占用过高,因此,在某些情况下,... 目录前言func-timeout1. 安装 func-timeout2. 基本用法自定义进程subp

Java字符串处理全解析(String、StringBuilder与StringBuffer)

《Java字符串处理全解析(String、StringBuilder与StringBuffer)》:本文主要介绍Java字符串处理全解析(String、StringBuilder与StringBu... 目录Java字符串处理全解析:String、StringBuilder与StringBuffer一、St

浅析Java中如何优雅地处理null值

《浅析Java中如何优雅地处理null值》这篇文章主要为大家详细介绍了如何结合Lambda表达式和Optional,让Java更优雅地处理null值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录场景 1:不为 null 则执行场景 2:不为 null 则返回,为 null 则返回特定值或抛出异常场景

C++中初始化二维数组的几种常见方法

《C++中初始化二维数组的几种常见方法》本文详细介绍了在C++中初始化二维数组的不同方式,包括静态初始化、循环、全部为零、部分初始化、std::array和std::vector,以及std::vec... 目录1. 静态初始化2. 使用循环初始化3. 全部初始化为零4. 部分初始化5. 使用 std::a

shell编程之函数与数组的使用详解

《shell编程之函数与数组的使用详解》:本文主要介绍shell编程之函数与数组的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录shell函数函数的用法俩个数求和系统资源监控并报警函数函数变量的作用范围函数的参数递归函数shell数组获取数组的长度读取某下的

深入理解Apache Kafka(分布式流处理平台)

《深入理解ApacheKafka(分布式流处理平台)》ApacheKafka作为现代分布式系统中的核心中间件,为构建高吞吐量、低延迟的数据管道提供了强大支持,本文将深入探讨Kafka的核心概念、架构... 目录引言一、Apache Kafka概述1.1 什么是Kafka?1.2 Kafka的核心概念二、Ka

openCV中KNN算法的实现

《openCV中KNN算法的实现》KNN算法是一种简单且常用的分类算法,本文主要介绍了openCV中KNN算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录KNN算法流程使用OpenCV实现KNNOpenCV 是一个开源的跨平台计算机视觉库,它提供了各