发布网友 发布时间:2022-03-25 16:30
共3个回答
热心网友 时间:2022-03-25 17:59
程序就是读取文件到数组,再将数组进行排序,最后写入文件。
读写文件流程:fopen获取文件流(根据读写需求,选择参数,使用完必须调用fclose函数关闭),fscanf读取文件内容,fseek控制文件流指针,fprintf写入文件。
选择排序:每个循环周期选出一个最值,交换一次。
下面是代码(数组为动态数组):
#include <stdio.h>
#include <malloc.h>
int maxLen;//数组长度
int *read2Nums(char path[]);//读取
int write2File(int *nums,char path[]);//写入
void showNums(int *nums);
int px(int *nums,int flag);//选择排序flag=1升序,flag=0降序
int main()
{
int *nums=NULL;
char rPath[]="c:\\000.dat",wPath[]="c:\\rank.dat";
if(!(nums=read2Nums(rPath))) return 1;
showNums(nums);
printf("数组升序排列:\n");
if(px(nums,1)==-1) return 1;
showNums(nums);
printf("数组降序排列:\n");
if(px(nums,0)==-1) return 1;
showNums(nums);
printf("写入到文件路径%s下(存在覆盖,不存在新建)\n",wPath);
if(write2File(nums,wPath)==-1) return 1;
printf("写入成功!\n");
return 0;
}
void showNums(int *nums)
{
int i;
if(nums) for(i=0,printf("文件内容:\n");i<maxLen;printf("%d ",nums[i]),i++);
printf("\n");
}
int px(int *nums,int flag)
{
int i,j,n,temp;
if(!nums) return -1;
for(i=0;i<maxLen-1;i++)
{
n=i;
for(j=i+1;j<maxLen;j++)
{
if(flag && nums[n]>nums[j]) n=j;
if(!flag && nums[n]<nums[j]) n=j;
}
temp=nums[i],nums[i]=nums[n],nums[n]=temp;
}
return 1;
}
int write2File(int *nums,char path[])
{
int i;
FILE *fp=NULL;
if(!nums) return -1;
if(!(fp=fopen(path,"w"))) return -1;
//fseek(fp,SEEK_END);
for(i=0;i<maxLen;i++)
fprintf(fp,"%d ",nums[i]);
fclose(fp);
return 1;
}
int *read2Nums(char path[])
{
int *nums=NULL,*temp=NULL,cnt=0;
FILE *fp=NULL;
maxLen=10;
if(!(fp=fopen(path,"r"))) return NULL;
nums=(int *)malloc(sizeof(int)*maxLen);
if(!nums) return NULL;
while(fscanf(fp,"%d",&nums[cnt++])!=-1)
if(cnt==maxLen)//数组长度不够扩展(每次扩展10长度)
{
maxLen=maxLen+10;
temp=(int *)realloc(nums,sizeof(int)*maxLen);
if(temp) return NULL;
nums=temp;
}
if(--cnt<maxLen)//函数结束前,删除多余地址,减少内存占用
{
maxLen=cnt;
temp=(int *)realloc(nums,sizeof(int)*maxLen);
if(!temp) return NULL;
nums=temp;
}
fclose(fp);
return nums;
}
热心网友 时间:2022-03-25 19:17
指定完成完成排序完成以件当中有记得关闭要求写要,按照他题目的要求打开指定的文件,然后把数据读入到一个一为数组中,然后对这个一为输出进行排序排序完成,以后再按照要求写入指定的文件当中,要记得关闭文件热心网友 时间:2022-03-25 20:52
付费内容限时免费查看回答亲,是这样的哦准备材料
windows电脑、VC++(DEV_C++)
1.打开桌面上的DEV_C++,进入如下界面:
2.快捷键“CTRL+N”建立新源代码。
3.输入源代码,下面给出最简单的Hello,world源代码:
#include
int main( ){
printf("Hello,World\n");
return 0;
}
4.按下F11编译并且运行源代码,得到运行结果:
5.点击任意键返回源代码编辑界面可以继续进行开发,接下来就是C语言语法的学习了。