Требуется получить ip-адрес и заполнить им массив.
Код: Выделить всё
unsigned short answer[ANSWER_MAX_LEN] = {0};
case COMMAND_NETWORK_GET_PARAM:
{
unsigned char data[INET_ADDRSTRLEN];
struct in_addr data_s;
data_s.s_addr = net_get_ifaddr("eth0");
inet_ntop(AF_INET, &data_s, data, INET_ADDRSTRLEN);
printf("data %s\n", data);
printf("sscanf %d\n", sscanf(data, "%3d.%3d.%3d.%3d",
&answer[1], &answer[2], &answer[3], &answer[4]));
printf("%d %d %d %d\n", answer[1], answer[2], answer[3], answer[4]);
Вывод этого кода:
Код: Выделить всё
data 192.168.10.254
sscanf 4
0 10 0 254
Судя по выводу я успешно конвертирую полученный ip-адрес, sscanf находит все компоненты ip-адреса, но в массиве оказываются не все цифры, а те, что и попали в массив находятся не на своём месте.
В чём ошибка?
Ранее я уже использовал sscanf для разбора ip-адреса и таких сложностей не возникло.
Код: Выделить всё
case COMMAND_NETWORK_SET_GATEWAY:
if (sscanf(value, "%3d.%3d.%3d.%3d",
&send[1], &send[2], &send[3], &send[4]) != 4)
{
PARSE("%s", value);
res = RESULT_DATA;
}
break;
Спасибо.