整型数组处理算法(二)文件中有一组整数,要求排序后输出到另一个文件中
2013-09-26 21:41
513 查看
如题,需要将文件里的一组整数,排序后写到另外一个文件中。思路:一次读取一个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()测试结果,就不贴了,有兴趣的朋友可以用代码测试测试,文件是按二进制写的,用UE或其他可以查看二进制的工具打开。在这个过程遇到R6030 CRT not initialized的问题,才改变算法,先读取文件大小,计算整型数个数。关于为什么会出现R6030 CRT not initialized另外写一篇。转载请注明原创链接:/article/1385469.html
{
/*
//可以执行这个先进行写测试数据到文件
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;
}
相关文章推荐
- N小时改变一次url时间戳的方法
- 《UNIX环境高级编程》笔记--chown,fchown和lchown函数
- 解决一个maven在eclipse中M2_HOME不能调整的问题
- c++动态联编与静态联编
- 单源最短路径—Bellman-Ford和Dijkstra算法
- 如何禁用注册表 解禁注册表
- Fx Composer2.5 在Win8.1下无法运行的解决方法
- 硬盘“坏了”怎么办
- Mex
- php文件操作及html生成
- 关于PHP页面显示乱码问题的解决
- 关于 lighttpd 和它的流行看出 开源社区是如何的不严谨
- 上传文件
- 分页管理
- PHP+MYSQL 简单的留言板
- 简单的留言板
- PYTHON错误大总结!
- JavaScript运算符有哪些
- 图像处理之反色和补色
- 能够兼容ViewPager的ScrollView