程序就是读取文件到数组,再将数组进行排序,最后写入文件。
读写文件流程: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;
}
请采纳
不好意思啊,用指针交换两个值我还不会呢,不过你把第二个for改成指针交换就行了,你可以等等我,我先去研究一下怎么交换
c语言可以用来编写怎么样的程序?
简而言之,任何程序皆可用C语言编写。由于C语言在工业领域的广泛应用,几乎在任何平台、硬件及应用上,都能利用C编程实现。尽管如此,C编程相对属于较低级别的编程方式,因为它以过程为中心。高手能巧妙地将程序分解为模块,但对于多数开发者而言,利用C编写大型程序更为简便。综上所述,C语言的适用范围...
c语言编程有什么用?
编程实质上就是运用专业术语,编写出能够按照人类意愿指挥电脑执行特定操作的程序。在现今编程领域,流行的编程语言有VB和C++等,这些语言的下载和学习资源在网络上十分丰富,入门门槛相对较低。学习编程不仅能够提升解决问题的能力,还能培养逻辑思维、创造力和耐心。掌握编程技能,可以应用于多个领域,如软件开...
c语言怎么开始编写程序
C语言是普适性最强的一种计算机程序编辑语言,它不仅可以发挥出高级编程语言的功用,还具有汇编语言的优点,计算和的方法为:1、新建一个求1到100自然数之和项目。2、添加一个cpp文件。3、包含需要用到的头文件。4、输入main函数。5、定义两个变量,分别是:a和sum。6、使用while语句计算1到100之间...
怎样使用C语言进行编程?
1、首先,编写头文件以及main函数主框架。2、接下来可以for语句给他赋值。3、为了方便测试,可以将其输出。4、然后我们点击编译运行按钮。5、这个时候便可以看到如下图效果。注意事项:尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括类似嵌入式处理...
怎么编写C语言的?
C语言编程的基本步骤如下:首先,打开Visual C++ 6.0中文版,界面如图所示。点击文件菜单中的新建,设置工作空间,然后点击确定,建立工作空间。接下来,再次点击文件菜单的新建,创建一个名为helloworld.c的小程序。使用VC++ 6.0编译程序,编译无误后执行。编译和运行按钮在工具栏,可以通过快捷键Ctrl+F7...
用c语言编写的程序被称为
用c语言编写的程序被称为源程序。C语言是一种编程语言,是其中最重要和最基础的语言之一。它是由贝尔实验室的Dennis Ritchie在1970年代初开发的,并于1972年首次应用于UNIX操作系统的开发。C语言具有强大的控制能力,支持面向对象、结构化、指针和动态内存分配等特性。C语言是非常流行的编程语言,被广泛...
如何编写C语言程序?
2.快捷键“CTRL+N”建立新源代码。3.输入源代码,下面给出最简单的Hello,world源代码:include <stdio.h> int main( ){ printf("Hello,World\\n");return 0;} 4.按下F11编译并且运行源代码,得到运行结果:5.点击任意键返回源代码编辑界面可以继续进行开发,接下来就是C语言语法的学习了。
如何学习C语言编程
下面就来看看如何开始用C语言编程吧。准备工作下载和安装编译器。C语言需要通过编译器解释为计算机可以理解的机器码。 编译器通常是免费的, 不同的操作系统上一般使用不同的编译器。 对于Windows系统, 可以尝试 Microsoft Visual Studio Express,其是Windows平台上最流行的多语言IDE(集成开发环境),其集成了Microsoft开发...
c语言编程如何实现二维数组的创建和初始化?
在 C 语言中,实现二维数组的创建和初始化通常通过使用数组的数组来完成。例如,创建一个 3x3 的二维数组并初始化所有元素为 0 的代码如下所示:在这个示例中,两组花括号被用来表示一个二维数组,每组花括号包含一个一维数组。例如,{0, 0, 0} 表示第一行的三个元素,{0, 0, 0} 表示第二行...
用C语言怎样编程从大到小排列?
C语言程序如下:include<stdio.h> intmain(){ inta,b,c,t;printf("请输入三个数:");scanf("%d%d%d",&a,&b,&c);if(a>b){ t=a;a=b;b=t;} if(a>c){ t=a;a=c;c=t;} if(b>c){ t=b;b=c;c=t;} printf("从小到大的顺序是:%d %d %d\\n",a,b,c);return0;} ...