免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: aleenhu1983
打印 上一主题 下一主题

结构体指针为什么指向自己成员的时候出错了,请高手指点! [复制链接]

论坛徽章:
0
1 [报告]
发表于 2006-05-16 12:09 |显示全部楼层
我晕,看清楚一点,楼主!

struct        ether_arp {
        struct        arphdr ea_hdr;                /* fixed-size header */
        u_int8_t arp_sha[ETH_ALEN];        /* sender hardware address */
        u_int8_t arp_spa[4];                /* sender protocol address */
        u_int8_t arp_tha[ETH_ALEN];        /* target hardware address */
        u_int8_t arp_tpa[4];                /* target protocol address */
};
....
     printf("header:%d\n",a->eahdr);
      printf("dest ip = %d",a->tpa);
      printf("source ip =%d",a->spa);
      printf("dest mac =%d",a->tha);
      printf("source ip =%d",a->sha);

ea_hdr----eahdr??
arp_sha----sha??

论坛徽章:
0
2 [报告]
发表于 2006-05-16 14:25 |显示全部楼层
明明是你的成员名字错误嘛,你和46楼引用的代码中的成员名字对对看

原帖由 aleenhu1983 于 2006-5-16 13:26 发表
问题解决了.仔细监查了一下,确实是头文件引用路径不对.因为看一个法国人写的程序是那样的,自己也没太仔细看,只顾着找结构体的原定义去了!多谢各位的帮忙.其实是可以直接引用的.
#include <netinet/if_ether.h ...

论坛徽章:
0
3 [报告]
发表于 2006-05-16 14:31 |显示全部楼层
你测测这个

#include <stdio.h>
char *s;
int main()
{
char buffer[1024];
sprintf(buffer,"OK!\n");
s=buffer;
function();

}

int function ()
{
  printf("%s" ,s);
}


原帖由 gucuiwen 于 2006-5-16 14:04 发表


这么多人说了这么多答案,其实就只有这一个是正确的。
原因就是buffer是main函数中的栈空间,不能在show()函数里得到,而作者的代码的show()函数是没有参数的,因此buffer中的内容在调用show()函数的时候并没有 ...

论坛徽章:
0
4 [报告]
发表于 2006-05-17 09:07 |显示全部楼层
你的问题到底解决了没有?
是什么原因?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP