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的值,但是当它在struct中的struct中时,我无法弄清楚修改src或dst的正确语法。我知道访问结构中的成员通常是ip->成员或(* ip).member,但这似乎对我不起作用。在结构中的结构中访问成员的正确过程是什么?
编辑:我想更改src和dst的ip地址(值)。使用
等行时 “IP-> ip_src =”
要么
“ip-> ip_src.s_addr =”,我得到错误
“分配只读位置'* ip'
答案 0 :(得分:3)
您只需将操作员组合到正确的位置:
ip->ip_src.s_addr
答案 1 :(得分:0)
struct in_addr other_addr;
ip->ip_src = other_addr;
答案 2 :(得分:0)
你的问题是:
const struct sniff_ip *ip;
而不是:
struct sniff_ip const *ip = ...;
在您当前的声明中,您有ip
,指向const
类型的struct sniff_ip
数据。