一个数组分配大小的问题

这是写一个程序从文件中读取IP,MAC,client-hostname等信息时遇到的一个问题。

DHCP服务器每分配一个地址,都有一条记录放在dhcpd.leases文件中,记录的格式类似为:

lease 192.168.1.3 {
  starts 3 2012/07/04 07:51:55;
  ends 3 2012/07/04 09:51:55;
  cltt 3 2012/07/04 07:51:55;
  binding state active;
  next binding state free;
  hardware ethernet 00:0c:29:c7:4e:30;
  uid "\001\220+4!40";
  client-hostname "PC-003";
}

在程序中,定义了如下字符数组存放读取的值

char ip[16];
char mac[18];
char client_hostname[128];
代码用gcc编译后运行。读取后应该显示:

ip: 192.168.1.3
mac: 00:0c:29:c7:4e:30
client-hostname: PC-003
但实际显示的是:

ip: 
mac: 00:0c:29:c7:4e:30
client-hostname: PC-003
ip的值没有显示出来,用GDB跟踪调试,发现是在给mac赋值的语句执行后,ip的前三个字节被修改了,ip[0]被修改为“\0”。


但是如果将ip的数组空间大小改为20,这种问题就不会出现,ip的值能正常显示出来;同样的程序,ip数组空间大小定义为16,在Windows下用Dev-c++编译也能正常显示。。

我不明白为什么加大数组空间后就没问题了,这是linux下gcc的bug还是什么问题?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值