我是一个C语言的新手,我正在尝试为以太网络编写一个空闲端口监视器应用程序,应用程序通过协议测量广播流量并生成一个文本文件报告,但是所预期 例如在代码的174行其打印到文件输出是从不同如下所示它打印出的预期值 arp1_sourceC程序打印错误的输出到文件
arp1_source = source;
fprintf(stdout,"arp1->source is %s\n",arp1_source);
但是当它打印出相同的变量的内容在1365行,它打印出一个不同的mac地址
fprintf(stdout ," %s %d.%d.%d.%d %d %d\n",
arp1_source,
arp1_ip_source[0],
arp1_ip_source[1],
arp1_ip_source[2],
arp1_ip_source[3],
arp1_total,
arp1);
我不知道为什么会发生这种情况,我不知道我在做什么错,请帮忙,我的代码在下面(尽管它很长,如果需要我可以发送完整的代码) 谢谢。
我已经定义了变量,但是当我执行数据包的实时捕获时,第一行打印出的arp1_source中的值与捕获完成后写入文本文件的值不同第一线可以打印出
“ARP1 - 源是0E:32:64:89:20:5E”
,当它是打印出存储内部arp1_source到的MAC地址如第二个代码所示的文本文件,它打印出一个错误的mac地址,好像原来的mac地址被另一个mac地址覆盖,我的de用char关键字来存储mac地址。
你必须给的东西*定义*您尝试打印-_- – StoryTeller 2013-02-15 11:32:06
一MAC地址由六个十六进制字节组成。您打印四位小数,就像它是一个IP地址,而不是一个MAC地址。这是什么? – LSerni 2013-02-15 11:32:48
'arp1_ip_source []','arp1_total'和'arp1'是什么类型的?它们都必须是'int',所以'%d'适用于它们,或者必须将'%d'更改为适当的任何内容(例如,'%ld'代表'long')。 – 2013-02-15 11:51:30