sscanf和八进制

问题描述:

为什么它不工作?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是完全可以接受的。

没有“8”,并在八进制“9”,所以192168不是八进制数,所以sscanf不能解析它们为八进制数字。

+1

我会在12分钟内接受您的回答。谢谢一堆。 – bioffe

八进制数可能只包含数字0-7。当读取IP地址时,您正在寻找八位字节,而不是八进制。八位字节是一个8位的数据值。

+0

你是对的。我会以不同的方式做事。 – bioffe