[英]C program prints wrong output to file
我是使用C語言的新手,我正在嘗試編寫用於以太網的空閑端口監視器應用程序,該應用程序通過協議測量廣播流量並生成文本文件報告,但是它打印到文件的輸出與例如在代碼的第174行中是預期的,如下所示,它將打印出預期值arp1_source
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-source為0e:32:64:89:20:5e”
並如第二個代碼所示將arp1_source中存儲的mac地址打印出到文本文件時,它打印出錯誤的mac地址,好像原始的mac地址被另一個覆蓋,我聲明要存儲的char字符串具有const關鍵字的mac地址。
seems like original mac address is overwritten by another one
-是的,這聽起來像是正在發生的事情。
當前編寫此問題的方式無法解決。 您想知道為什么在第174行獲得了預期的結果,但是在第1365行,字符串卻發生了變化……眾所周知,最好看一下這1191行代碼。 正如您所說,那很長,所以這里有一些想法:
搜索代碼中設置了arp1_source
或 arp1_source
設置另一個變量的每個位置(特別是您是否有使用arp1_source
的地址的雙指針?)
您是否曾經將其地址傳遞給函數? 這是更改它的主要地方
獲取調試器並逐步執行代碼。 您知道值在某處發生了變化,您只需要弄清楚該在哪里。
最壞的情況是,您始終可以對其進行二進制搜索。 在第769行的某處打印arp1_source
的值,這是您期望的嗎? 如果是:在1066附近打印該值; 如果否:在第471行附近打印該值,繼續操作直到您精確地更改了該值的位置
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.