2011-10-06 52 views
3

爲什麼它不工作?sscanf和八進制

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是完全可以接受的。

回答

10

沒有「8」,並在八進制「9」,所以192168不是八進制數,所以sscanf不能解析它們爲八進制數字。

+1

我會在12分鐘內接受您的回答。謝謝一堆。 – bioffe

1

八進制數可能只包含數字0-7。當讀取IP地址時,您正在尋找八位字節,而不是八進制。八位字節是一個8位的數據值。

+0

你是對的。我會以不同的方式做事。 – bioffe

相關問題