以下代码是按“不知道文件中有多少个整数”的要求写的。
#include "stdio.h"
#include
int main(int argc,char *argv[]){
int n,*p;
int *myread(int *);
void sort(int *,int);
void mywrite(int *,int);
p=myread(&n);
sort(p,n);
mywrite(p,n);
free(p);//释放所申请的空间
return 0;
}
int *myread(int *n){
FILE *fp;
int t,*p;
if((fp=fopen("7-2.dat","r"))==NULL){
printf("Failed to open the file and exit...\n");
exit(0);
}
for(*n=0;fscanf(fp,"%d",&t)==1;(*n)++);//求文件有多少个整数
if((p=(int *)malloc(*n*sizeof(int)))==NULL){//动态申请内存
printf("Application memory failure...\n");
exit(0);
}
rewind(fp);//文件指针回到文件开头
for(t=0;fscanf(fp,"%d",p+t)==1;t++);//将文件数据读到动态数组p
fclose(fp);
return p;
}
void sort(int *p,int n){
int i,j,k;
for(i=0;i for(k=i,j=k+1;j if(p[k]>p[j]) k=j; if(k!=i) j=p[i],p[i]=p[k],p[k]=j; printf("%d ",p[i]);//排序后的数据显示到屏幕,调试完毕删除此行 } } void mywrite(int *p,int n){ FILE *fp; int m; if((fp=fopen("7-2.out","w"))==NULL){ printf("Failed to create the file and exit...\n"); exit(0); } for(m=0;m fclose(fp); } 代码格式和运行结果图片:
C是编程语言里比较难学的一门,如果有心从事编程方向的工作,最好到专业机构多实践,更贴近市场,这样更有利于将来的发展。