gpt4 book ai didi

c - 读取二进制文件时如何分别对每个结构体字段使用 fread() ?

转载 作者:行者123 更新时间:2023-11-30 14:55:39 25 4
gpt4 key购买 nike

在我的结构中,我有字段

struct records {
short link;
double gate;
unsigned char bar;
int rest;
char rink;
};

在我的main()

int main(int argc, char* argv[]){
struct records rec;

if(argc<2){//no paramaters
//return error
}

FILE *fp=fopen(argv[1], "rb");

if(fp==NULL){//no file
//return error
}

//use fread() for each field in struct separately.

fclose(fp);
return 0;
}

如何调用 fread() 以便它分别读取每个 struct 字段,然后将它们打印出来?我知道(每个类似的问题和网上的评论)显示通过提供整个struct来调用fread(),但我不想这样做,例如。 fread(&rec, sizeof(rec), 1, fp)。我想使用自己的 fread() 调用单独读取每个字段。感谢任何帮助,谢谢。

最佳答案

fread 需要两个重要的参数:指针和长度。

您可以轻松获得两者:

struct records {
short link;
double gate;
unsigned char bar;
int rest;
char rink;
};

int main(int argc, char* argv[]){
struct records rec;

// ...

FILE *fp=fopen(argv[1], "rb");

// ...

//use fread() for each field in struct separately.

while (!feof(fp))
{
if (fread(&rec.link, sizeof(rec.link), 1, fp) != 1
|| fread(&rec.gate, sizeof(rec.gate), 1, fp) != 1
|| // etc...
)
{
// error !
}
// print the contents of rec, for example...
}
// ...
}

关于c - 读取二进制文件时如何分别对每个结构体字段使用 fread() ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45656978/

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