Ken*_*ihe 5 c ip struct file readfile
在下面解决
我正在编写IP转发程序,并试图读取标头数据。
我有不同行的结构,例如第一行:
struct line1 {
char a; //version
char b; //header length
unsigned short c; //datagram length
};
Run Code Online (Sandbox Code Playgroud)
不同的数据类型取决于数据字段的长度。
我有变量初始化:
struct line1 l1 = {};
FILE *ip_packets, *routing_table;
Run Code Online (Sandbox Code Playgroud)
我的教授展示了一个简单的读取功能,该功能类似于read(ip_packets, 4, l1) (4个字节),可自动将数据放入struct字段中。我已经在网上搜索过,还没有找到像这样的简单方法。我在寻找什么读取功能?
我已经尝试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);
}
Run Code Online (Sandbox Code Playgroud)
我也尝试过语法%c,%c,%hu或%c/%c/%hu
但这只是打印:
Kendalls-Mac-mini:Programming 2 kendallweihe$ ./ip_read
E
0
Run Code Online (Sandbox Code Playgroud)
解
原来我正确地读取了它,但是我需要打印整数值。我的测试验证是以整数表示的。很简单。
更好的解决方案
fread(&l1, 4, 1, ip_packets);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
488 次 |
| 最近记录: |