使用文件操作实现开平方分为两个过程,分别是开平方的数据的保存和开平方数据的读取
大前提:首先定义一个开平方结构体,结构体中有两个成员,分别是开平方的数据和开平方后的结果
struct sqrts//开平方结构
{
double x;//开平方的数字
double y;//开平方后的结果
};
开平方数据的保存算法:
建立一个文本文件sqrt.txt——计算开平方的数据——将计算的数据和结果以数据块的形式保存在文本中——关闭文本
实现代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
struct sqrts//开平方结构
{
double x;//开平方的数字
double y;//开平方后的结果
};
//保存开平方的数据
void Save(struct sqrts *m);
void main()
{
struct sqrts m[20];
Save(m);//保存开平方的数据
system("pause");
}
//保存开平方的数据
void Save(struct sqrts *m)
{
FILE *fp;//文件结构
//新建一个文本
fp = fopen("D:\\sqrt.txt","w");
if(NULL == fp)
{
printf("Error !\n");
exit(0);
}
else
{
printf("文件打开成功!\n");
int i;
for(i=0;i<20;i++)//对1到20以内的数据开平方
{
m[i].x = i+1;
m[i].y = sqrt(m[i].x);
}
//将数据以数据块的形式写入文件中
fwrite(m,sizeof(struct sqrts),20,fp);
fclose(fp);//关闭文件
}
}
执行结果:
开平方数据打开算法:
打开文本文件sqrt.txt——以数据块的形式读取文本——打印读取后的数据——关闭文本
实现代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
struct sqrts//开平方结构
{
double x;//开平方的数字
double y;//开平方后的结果
};
//输出开平方后的数字
void Load(struct sqrts *m);
void main()
{
struct sqrts m[20];
Load(m);//读取数据
system("pause");
}
//读取数据
void Load(struct sqrts *m)
{
FILE *fp;//文件指针
int i;
//打开文件
fp = fopen("D:\\sqrt.txt","r");
if(NULL == fp)
{
printf("Error !\n");
exit(0);
}
else
{
//以数据块的形式读取文件中的数据
fread(m,sizeof(struct sqrts),20,fp);
for(i=0;i<20;i++)//输出文件中的数据
{
printf("%g的平方根是%g\n",m[i].x ,m[i].y );
}
fclose(fp);
}
}
执行结果: