C++程序编程先读取文件数据按从小到大的顺序排列然后在移到另一个文件中?
1个回答
展开全部
//---------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
int comp(const void *a,const void *b)
{
int fg=1; /*fg=1表示升序排序,fg=-1表示降序排序*/
return fg*(*(int *)a-*(int *)b);
}
int main(void)
{
FILE *fp=fopen("c:\\dat.txt","r"); /*待排序数据文件,可在此修改*/
int n=0,in,*a=NULL;
while (fscanf(fp,"%d",&in)!=EOF)
{
a=a?realloc(a,sizeof(int)*(n+1)):malloc(sizeof(int));
a[n++]=in;
}
fclose(fp);
qsort(a,n,sizeof(int),comp);
fp=fopen("c:\\sort_dat.txt","w"); /*已排序数据文件,可在此修改*/
for (in = 0; in<n; in++) {
fprintf(fp,"%d ",a[in]);
}
fclose(fp);
return 0;
}
//---------------------------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
int comp(const void *a,const void *b)
{
int fg=1; /*fg=1表示升序排序,fg=-1表示降序排序*/
return fg*(*(int *)a-*(int *)b);
}
int main(void)
{
FILE *fp=fopen("c:\\dat.txt","r"); /*待排序数据文件,可在此修改*/
int n=0,in,*a=NULL;
while (fscanf(fp,"%d",&in)!=EOF)
{
a=a?realloc(a,sizeof(int)*(n+1)):malloc(sizeof(int));
a[n++]=in;
}
fclose(fp);
qsort(a,n,sizeof(int),comp);
fp=fopen("c:\\sort_dat.txt","w"); /*已排序数据文件,可在此修改*/
for (in = 0; in<n; in++) {
fprintf(fp,"%d ",a[in]);
}
fclose(fp);
return 0;
}
//---------------------------------------------------------------------------
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询