文本文件、二进制文件操作01(C)

现有一个二进制文件 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;
}

猜你喜欢

转载自blog.csdn.net/ukco_well/article/details/82218883