gpt4 book ai didi

c - 从二进制文件读取结构时出现问题

转载 作者:太空宇宙 更新时间:2023-11-04 06:48:52 24 4
gpt4 key购买 nike

当我尝试编写应该按特定字段(键)对文件中的某些结构进行排序的代码时,我注意到我的函数无法正确读取键。我不知道我做错了什么。代码不完整。

constr 函数应该一次从二进制文件中读取一个结构,然后只保存 varsta 数组。但是,如果我尝试查看我获得的值,这些值不是我给出的值。

这是我的代码:

#include <stdio.h>
#include <stdlib.h>


typedef struct
{
char nume[20];
char prenume[20];
float varsta;
} PERS;


typedef struct
{
float key;
int nr;
}INDEX;

int constr(FILE *f, INDEX tabl[])
{
int n;
n = ftell(f) / sizeof(PERS);

int i, depl = 0;
PERS p;
for (i = 0; i < n; i++)
{
fseek(f, depl, 0);

fread(&p, sizeof(p), 1, f);

tabl[i].key = p.varsta;
tabl[i].nr = i;
depl += sizeof(PERS);

}

return n;
}





int main()
{
FILE *f;
PERS pers[3];


if ((f = fopen("fis.txt", "wb+")) == NULL)
{
printf("Not ok");
exit(1);
}

int i;
for (i = 0; i < 3; i++)
{
scanf("%s%s%f", &pers[i].nume, &pers[i].prenume, &pers[i].varsta);
fwrite(&pers[i], sizeof(PERS), 1, f);

}


INDEX tabl[3];

int n = constr(f, tabl);

printf("%d", tabl[2].key); //only to check if the key is correct

fclose(f);
}

最佳答案

key 字段是一个 float ,但您正试图打印一个整数。

将代码中的倒数第二行更改为

printf("%.2f\n", tabl[2].key);

关于c - 从二进制文件读取结构时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54294666/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com