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

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

相关文章

C++初始化数组的几种常见方法(简单易懂)

《C++初始化数组的几种常见方法(简单易懂)》本文介绍了C++中数组的初始化方法,包括一维数组和二维数组的初始化,以及用new动态初始化数组,在C++11及以上版本中,还提供了使用std::array... 目录1、初始化一维数组1.1、使用列表初始化(推荐方式)1.2、初始化部分列表1.3、使用std::

C++ Primer 多维数组的使用

《C++Primer多维数组的使用》本文主要介绍了多维数组在C++语言中的定义、初始化、下标引用以及使用范围for语句处理多维数组的方法,具有一定的参考价值,感兴趣的可以了解一下... 目录多维数组多维数组的初始化多维数组的下标引用使用范围for语句处理多维数组指针和多维数组多维数组严格来说,C++语言没

Spring排序机制之接口与注解的使用方法

《Spring排序机制之接口与注解的使用方法》本文介绍了Spring中多种排序机制,包括Ordered接口、PriorityOrdered接口、@Order注解和@Priority注解,提供了详细示例... 目录一、Spring 排序的需求场景二、Spring 中的排序机制1、Ordered 接口2、Pri

使用C++将处理后的信号保存为PNG和TIFF格式

《使用C++将处理后的信号保存为PNG和TIFF格式》在信号处理领域,我们常常需要将处理结果以图像的形式保存下来,方便后续分析和展示,C++提供了多种库来处理图像数据,本文将介绍如何使用stb_ima... 目录1. PNG格式保存使用stb_imagephp_write库1.1 安装和包含库1.2 代码解

C#使用DeepSeek API实现自然语言处理,文本分类和情感分析

《C#使用DeepSeekAPI实现自然语言处理,文本分类和情感分析》在C#中使用DeepSeekAPI可以实现多种功能,例如自然语言处理、文本分类、情感分析等,本文主要为大家介绍了具体实现步骤,... 目录准备工作文本生成文本分类问答系统代码生成翻译功能文本摘要文本校对图像描述生成总结在C#中使用Deep

Spring Boot 整合 ShedLock 处理定时任务重复执行的问题小结

《SpringBoot整合ShedLock处理定时任务重复执行的问题小结》ShedLock是解决分布式系统中定时任务重复执行问题的Java库,通过在数据库中加锁,确保只有一个节点在指定时间执行... 目录前言什么是 ShedLock?ShedLock 的工作原理:定时任务重复执行China编程的问题使用 Shed

Redis如何使用zset处理排行榜和计数问题

《Redis如何使用zset处理排行榜和计数问题》Redis的ZSET数据结构非常适合处理排行榜和计数问题,它可以在高并发的点赞业务中高效地管理点赞的排名,并且由于ZSET的排序特性,可以轻松实现根据... 目录Redis使用zset处理排行榜和计数业务逻辑ZSET 数据结构优化高并发的点赞操作ZSET 结

微服务架构之使用RabbitMQ进行异步处理方式

《微服务架构之使用RabbitMQ进行异步处理方式》本文介绍了RabbitMQ的基本概念、异步调用处理逻辑、RabbitMQ的基本使用方法以及在SpringBoot项目中使用RabbitMQ解决高并发... 目录一.什么是RabbitMQ?二.异步调用处理逻辑:三.RabbitMQ的基本使用1.安装2.架构

使用TomCat,service输出台出现乱码的解决

《使用TomCat,service输出台出现乱码的解决》本文介绍了解决Tomcat服务输出台中文乱码问题的两种方法,第一种方法是修改`logging.properties`文件中的`prefix`和`... 目录使用TomCat,service输出台出现乱码问题1解决方案问题2解决方案总结使用TomCat,

一文详解Python中数据清洗与处理的常用方法

《一文详解Python中数据清洗与处理的常用方法》在数据处理与分析过程中,缺失值、重复值、异常值等问题是常见的挑战,本文总结了多种数据清洗与处理方法,文中的示例代码简洁易懂,有需要的小伙伴可以参考下... 目录缺失值处理重复值处理异常值处理数据类型转换文本清洗数据分组统计数据分箱数据标准化在数据处理与分析过