C语言:在向文件写数据时,一定要在fwrite操作完成后,调用fclose来关闭文件指针fp,否则会导致数据丢失,而无法完成保存数据到文件的作用

 如果不关闭文件将会丢失数据。因为,在向文件写数据时,是先将数据输出到缓冲区,待缓冲区充满后才正式输出文件。如果当数据未充满缓冲区而程序结束运行,就有可能使缓冲区的数据丢失,要用fclose函数关闭文件,先把缓冲区中的数据输出到磁盘文件,然后才撤销文件信息区。有的编译系统在程序结束前会自动先将缓冲区中的数据写到文件,从而避免了这个问题,但还是应当养成在程序终止前关闭所有文件的习惯。fclose函数也带回一个值,当成功地执行了关闭操作,则返回值0;否则返回EOF(-1);

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include<stdlib.h>
int main()
{
    int i;
    int ret_val_fwrite;
    float stu[922] = { 8.345,12.78,13.45};
    float stu2[922] = { 1 };
    FILE *fp;
    if ((fp = fopen("E:\\float_save_test.dat", "wb")) == NULL)
    {
       printf("打开文件失败\n");
       exit(0);
    }
    if ((ret_val_fwrite=fwrite(stu, sizeof(float), 922, fp)) != 922)
    {
        printf("write file error\n");
    }
fclose(fp);//此处如果不调用fclose(fp),关闭文件指针会导致数据丢失,而无法把数据保存到“E:\\float_save_test.dat”中。
                //打开float_save_test.dat文件,会发现是空的。

if ((fp = fopen("E:\\float_save_test.dat", "rb")) == NULL)
{
    printf("打开文件失败\n");
    exit(0);
}
fread(stu2, sizeof(float), 922, fp);
for (i = 0; i < 922; i++)
{
    printf("%f\n", stu2[i]);
}
fclose(fp);
return 0;
}

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值