私は 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-ソースは 0e:32:64:89:20:5e です」
そして、2番目のコードに示すように、arp1_source内に保存されているMACアドレスをテキストファイルに出力すると、間違ったMACアドレスが出力されます.元のMACアドレスが別のMACアドレスに上書きされているようです.格納する文字列を宣言しましたconst キーワードを使用した MAC アドレス。