簡體   English   中英

C程序將錯誤的輸出打印到文件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM