2012-02-16 15 views
2
struct sniff_ip { 
struct in_addr ip_src, ip_dst; 
} 

function{ 
const struct sniff_ip *ip; 
ip = (struct sniff_ip*)(packet +SIZE_ETHERNET); 

} 

ここでの目標は、ip_srcとip_dstの値を変更することですが、構造体にあるsrcまたはdstを変更する正しい構文がわかりません構造体内にあります。私はstruct内のメンバーにアクセスすることを知っていますが、通常ip-> memberまたは(* ip).memberですが、ここで私にとってはうまくいかないようです。構造体内の構造体にあるイベントでメンバーにアクセスする正しい手順は何ですか?structのstructにアクセスする方法

編集:srcとdstの両方のIPアドレス(値)を変更したいとします。このよう

としてライン "IP-> ip_src ="
または "IP-> ip_src.s_addr =" を使用している場合、私は読み取り専用の場所 '* IP'

+0

あなたは 'const struct'を宣言しているので、代入をすることができません。それに割り当てる場合は、構造体を'const'として宣言したり、 'struct sniff_ip * const ip'を宣言したりしないでください。 –

+0

私はipを変更することができますが、IP内のメンバーは変更できません。 – krikara

+0

私は行けば説明を書こうと思うかもしれませんが、この記事[http://www.codeguru.com/cpp/cpp/cpp_mfc/general/article.php/c6967]を見るだけでよいかもしれません。代わりに。 –

答えて

0
の 「割り当てというエラーが出ます
struct in_addr other_addr; 
ip->ip_src = other_addr; 
+0

私はあなたがstruct in_addr ip_src、ip_dst、other_addrを意味すると仮定しました。 other_addrが宣言されていないと言っているので、これは機能しません。 – krikara

+0

@krikanaいいえ、私はあなたが 'other_addr'という名前の' struct in_addr'と 'ip'という名前の' struct sniff_ip * 'を持っているなら' ip-> ip_src = other_addr'を使って 'ip_src 'ip'のメンバー – Borealid

+0

さて、私はあなたの手続きを試みましたが、読み込み専用の場所 '* ip'の割り当てエラーが発生しました – krikara

3

あなたは、単に正しい場所にオペレータを組み合わせ:

ip->ip_src.s_addr 
+0

このような状況では、srcとdstのIPアドレスを変更することになっていましたが、一旦コンパイルされるとエラーが表示されます: "read-ロカティのみon '* ip' " これは構文に問題がありますか? – krikara

0

あなたの問題がある:

const struct sniff_ip *ip; 

の代わり:あなたの現在の宣言、あなたはipを持って、タイプstruct sniff_ipconstデータへのポインタで

struct sniff_ip const *ip = ...; 

関連する問題