Я пишу функцию, которая принимает целочисленное значение и указатель на символ. функция преобразует целочисленное значение в двоичный код и сохраняет его в указателе 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/почему длина массивов не указана? – Peyman