从键盘读入10个浮点数,以二进制形式存入文件中;再从文件中读出数据显示在屏幕上。修改文件中第n个数据,修改的数据从键盘读入;再从文件中读出数据显示在屏幕上,以验证修改的正确性。
要求:
1)输出的数据保留小数点后两位;
2)读取后显示的10个浮点数在一行显示,两个数之间用一个空格分隔。
运行参考示例:
输入1:
4.3 2.6 9.2 5.4 6.4 8.3 1.22 7.5 3.25 6.68
5
5.19
输出1:
4.30 2.60 9.20 5.40 6.40 8.30 1.22 7.50 3.25 6.68
4.30 2.60 9.20 5.40 5.19 8.30 1.22 7.50 3.25 6.68
运行代码如下:
#include <stdio.h>
#include <stdlib.h>
void ctfb(FILE *fp)
{
int i;
float x;
for(i=0;i<10;i++)
{
scanf("%f",&x);
fwrite(&x,sizeof(float),1,fp);
}
}
void fbtc(FILE *fp)
{
float x;
rewind (fp);
fread(&x,sizeof(float),1,fp);
while(!feof(fp))
{
printf("%.2f ",x);
fread(&x,sizeof(float),1,fp);
}
printf("\n");
}
void updata(FILE *fp,int n,float x)
{
fseek(fp,(long)(n-1)*sizeof(float),0);
fwrite(&x,sizeof(float),1,fp);
}
int main()
{
FILE *fp;
int n=4;
float x;
if((fp=fopen("file.dat","wb+"))==NULL)
{
printf("can't open this file\n");
exit(0);
}
ctfb(fp);
fbtc(fp);
scanf("%d",&n);
scanf("%f",&x);
updata(fp,n,x);
fbtc(fp);
fclose(fp);
}