2009-06-08 4 views
4

Я пытаюсь использовать функцию inet_addr для преобразования IP-адреса char, но я думаю, что поскольку IP-адрес, который я передаю в функцию 'inet_addr', имеет (192.169.055.075) с нулевым значением, 'inet_addr 'функция интерпретирует это по-другому. Любое предложение о том, как удалить ведущие нули?Функция inet_addr и ведущие нули

Благодаря

char IPAddr[20]; //192.169.055.075 
ulAddr = inet_addr(IPAddr); 
+2

inet_addr() интерпретирует октет с ведущими нулями как восьмеричные. http://www.opengroup.org/onlinepubs/000095399/functions/inet_addr.html –

+0

Фред, вы должны продвигать это к истинному ответу :) –

+0

@Doug, я не думал, что он действительно ответил на вопрос, так как он не " Скажите что-нибудь о том, что с этим делать. –

ответ

6

Вы можете использовать inet_pton(3) вместо этого - он не интерпретирует лидирующий нуль, как восьмеричную приставка.

0

Как насчет:

string addr("192.168.055.075"); 
replace(addr.begin(), addr.end(), '.', ' '); 
istringstream iss(addr); 
int a,b,c,d; 
iss >> a >> b >> c >> d; 
ostringstream oss; 
oss << a << '.' << b << '.' << c << '.' << d; 
string addrWithoutLeadingZeros(oss.str()); 
+0

Спасибо .... Вот еще один способ найти решение проблемы. int a [4]; char c [20]; , если (sscanf ("192.169.055.075", "% 03d.% ​​03d.% ​​03d.% ​​03d", а, а + 1, а + 2, а + 3) == 4) { Sprintf (c, "% d.% d.% d.% d", a [0], a [1], a [2], a [3]); } –

Смежные вопросы