在我的结构
中,我有字段
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/