【发布时间】:2011-06-23 04:40:57
【问题描述】:
我正在编写一个函数,它接收整数值和指向字符的指针。 该函数将整数值转换为二进制并将其存储在 char 指针中。 char 指针长 16 个字节。
代码片段:
void int2bin(u_int16_t addr_IP, char *Binary)
{
int count;
printf("IP1add = %d \n", Binary);
for (count = 0; count < 16; count++) {
if(addr_IP>0)
*(Binary + 15-count) = addr_IP & 0x1 ? '1':'0';
else
*(Binary + 15-count) = '0';
addr_IP>>=1;
}
}
int main(int argc, char *argv[])
{
u_int16_t senderIP_16[], u_int16_t receiverIP_16[];
char sender_IP_hi[16], sender_IP_low[16];
int2bin(senderIP_16[0], &sender_IP_hi);
int2bin(senderIP_16[1], &sender_IP_low);
}
在第一次调用该函数时,它返回正确的值。但在第二遍中,第一遍的值被附加到第二遍,即sender_IP_low的长度变为32。
我该如何解决这个问题?
谢谢
【问题讨论】:
-
您是否使用 printf() 打印?
-
几件事:1/
main第一行的逗号是什么? 2/为什么没有指定数组的长度?