Sscanf и восьмеричные - PullRequest
       4

Sscanf и восьмеричные

4 голосов
/ 06 октября 2011

Почему бы это не сработало?

const char* ip =  "192.168.1.4";
unsigned int ip4[4];
sscanf(ip,"%o.%o.%o.%o",ip4,ip4+1,ip4+2,ip4+3); // doesn't work
sscanf(ip,"%d.%d.%d.%d",ip4,ip4+1,ip4+2,ip4+3); // works

Я проверил справочные страницы для scanf (3), и в нем четко указано, что% o вполне приемлемо.

Ответы [ 2 ]

10 голосов
/ 06 октября 2011

В восьмеричных числах "8" и "9" нет, поэтому 192 и 168 не являются восьмеричными числами, поэтому sscanf не может разобрать их как восьмеричные числа.

1 голос
/ 06 октября 2011

Восьмеричное число может содержать только цифры 0-7. При чтении по IP-адресам вы ищете октеты, а не восьмеричные. Октет - это значение данных с 8 битами.

...