现有一个二进制文件 E81_data.bin,其中存储了 20 个整数, 请将文件保存至 C 盘根目录下的 cdata 文件夹。 编写程序
完成如下功能:
(1) 编写一个函数, 读取出这些整数。
(2) 编写一个函数,对所有整数按照从小到大排序。
(3) 编写一个函数, 将排序后的所有整数写到 C 盘根目录下的 cdata 文件夹中的文本文件 E81_result.txt 中,每个整数占一行。
(4) 编写测试程序。
/*=========================================================================
*学号:1527403059
*作业:E81
*功能:(1) 编写一个函数,读取出这些整数。
(2) 编写一个函数,对所有整数按照从小到大排序。
(3) 编写一个函数,将排序后的所有整数写到 C 盘根目录下的 cdata 文件夹
中的文本文件 E81_result.txt 中,每个整数占一行。
(4) 编写测试程序。
*作者:陆胤任
*日期:2016.1.3
*=========================================================================*/
#include<stdio.h>
#include<stdlib.h>
struct NumberNode //结构体
{
int num;
};
/*function define
*@brief:读取出这些整数
*@param:*Filename:文件名
NumberNode *node:结构体数组首元素地址名
*@reval:void
*/
void ReadInfo(char *Filename,struct NumberNode *node)
{
FILE *fp; //定义指向FILE类型文件的指针变量
int i;
fp=fopen(Filename,"rb"); //打开二进制文件
if(NULL==fp) //检查文件是否打开成功
{
printf("打开文件失败!\n");
exit(0);
}
for(i=0;i<20;i++) //二进制方式读取文件
{
fread(&node[i],sizeof(struct NumberNode),1,fp);
}
fclose(fp); //关闭文件
}
/*function define
*@brief:对所有整数按照从小到大排序。
*@param:struct NumberNode *node:结构体数组首元素的地址
*@reval:void
*/
void Sort_NumberNode(struct NumberNode *node)
{
int i,j,min;
struct NumberNode temp;
for(i=0;i<19;i++) //选择排序
{
min=i;
for(j=i+1;j<20;j++)
{
if(node[j].num<node[min].num)
{
min=j;
}
}
if(min!=i)
{
temp=node[min];
node[min]=node[i];
node[i]=temp;
}
}
}
/*function define
*@brief:将排序后的所有整数写到 C 盘根目录下的 cdata 文件夹中的文本文件 E81_result.txt 中,每个整数占一行。
*@param:*Filename:文件名
struct NumberNode *node:结构体数组首元素的地址
*@reval:void
*/
void Save_sort_NumberNode(char *Filename,struct NumberNode *node)
{
FILE *fp;
int i;
fp=fopen(Filename,"w");
if(NULL==fp) //检查是否打开文件失败
{
printf("文件打开失败!\n");
exit(0);
}
for(i=0;i<20;i++) //二进制方式写入文件
{
fprintf(fp,"%d",node[i].num);
fprintf(fp,"\n"); //格式化输入换行符
printf("%d",node[i].num); //在屏幕上输出整数
printf("\n"); //在屏幕上输出换行符
}
}
int main()
{
struct NumberNode node[20]; //定义结构体数组
ReadInfo("C:\\cdata\\E81_data.bin",node); //调用函数
Sort_NumberNode(node); //调用函数
printf("排序后的整数为:\n");
Save_sort_NumberNode("C:\\cdata\\E81_result.txt",node); //调用函数
return 0;
}