在VC环境中,使用fwrite 写入浮点数数据异常

发布于 2022-09-03 00:33:50 字数 654 浏览 20 评论 0

#include<stdio.h>
#define SIZE 1
typedef struct
{
    float num;
    float age;
 }student;
 
student stu[SIZE];
 
void save()
{
    FILE *fp;
    int i;
    if((fp=fopen("dat.txt","w"))==NULL)
    {
        printf("无法打开此文件!\n");
        return;
    }
    for(i=0;i<SIZE;i++)
    if(fwrite(&stu[i], sizeof(student), 1, fp) != 1)
    printf("文件写入错误。!\n");
    fclose(fp);
}
 
void main()
{
    int i;
    for(i=0;i<SIZE;i++)
        scanf("%f%f",&stu[i].num,&stu[i].age);
    save();
}

图片描述

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

郁金香雨 2022-09-10 00:33:50

你可以按 F5 调试,在弹框的时候点重试,会跳到发生异常的点,左边会有个箭头标出是哪行造成的错误。

按这里提供的信息,至少有一处肯定是错的:

    if((fp=fopen("dat.txt","w"))==NULL)

要改成:

    if((fp=fopen("dat.txt","wb"))==NULL)

Windows 下读写二进制的文件,打开方式必须指定 "b" 参数,不然即使不发生运行时异常,出来的文件数据也不对。

始终不够爱げ你 2022-09-10 00:33:50

if(fwrite(&stu[i], sizeof(student), 1, fp) != 1)
应为
if(fwrite(stu[i], sizeof(student), 1, fp) != 1)

末が日狂欢 2022-09-10 00:33:50

~~就上面的代码来看,你的VC6有问题,你试试换个机器就能测试通过

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文