小编Pat*_*els的帖子

用C读取二进制文件

目前正在尝试用 C 编写程序来读取 .bin 文件。正如您在我的代码中看到的那样,我显然遗漏了一些东西,我尝试阅读了很多内容,但仍然完全卡住了。正如预期的那样,我的输出不是预期的。我预期的输出示例是 YV2840 KLT KDAB Thu Jan 16 12:44:00 2014

因为我正在尝试阅读有关航空公司航班的 .bin 文件。我认为它可能是错误的原因如下。

我应该定义一个名为“人类可读的日期字符串”的结构。这当然是不可能的,因为它会产生编译器错误。也许我不应该从字面上理解它,因为现在我将它定义为“时间戳”。

顺序和大小与写入文件的格式不匹配。

这是 bin 文件,如果有人感兴趣:http : //www.filedropper.com/acars 这是我的代码:

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

typedef struct MyStruct_struct {
    int FlightNum[7];
    char OriginAirportCode[5]; 
    char DestAirportCode[5];
    int TimeStamp;
} MyStruct;

int main() {
    FILE * bin;
    MyStruct myStruct;
    bin = fopen("acars.bin", "rb");

    while(1) {
        fread(&myStruct,sizeof(MyStruct),1,bin);
        if(feof(bin)!=0)
            break;
        printf("%d",myStruct.FlightNum);
        printf("%s" ,myStruct.OriginAirportCode);
        printf("%s" ,myStruct.DestAirportCode);
        printf("%d", myStruct.TimeStamp);
    }

    fclose(bin);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c struct fread

3
推荐指数
1
解决办法
9270
查看次数

标签 统计

c ×1

fread ×1

struct ×1