C:将二进制文件读入struct

时间:2016-04-10 16:40:29

标签: c file struct ip readfile

以下解决

我正在编写IP转发程序而我正在尝试读取标头数据。

我为第一行设置了不同的行,例如:

struct line1 {
  char a; //version
  char b; //header length
  unsigned short c; //datagram length
};

不同的数据类型取决于数据字段的长度。

我有变量初始化:

struct line1 l1 = {};
FILE *ip_packets, *routing_table;

我的教授展示了一个简单的读取函数,它类似于read(ip_packets, 4, l1)(4字节),可以自动将数据放入结构字段中。我在网上搜索过,并没有找到这样一个简单的方法。我正在寻找什么阅读功能?

我以这种方式试过fscanf

  if (fscanf(ip_packets, "%c %c %hu", &l1.a, &l1.b, &l1.c)){
    printf("%c\n", l1.a);
    printf("%c\n", l1.b);
    printf("%hu\n", l1.c);
  }

我还尝试过syntaxt %c,%c,%hu%c/%c/%hu

但这只是打印:

Kendalls-Mac-mini:Programming 2 kendallweihe$ ./ip_read
E

0

原来我正在读它,但我需要打印整数值。我的测试验证是按整数计算的。很容易。

更好的解决方案

fread(&l1, 4, 1, ip_packets);

0 个答案:

没有答案