我在C中解析一个IP字符串,我使用以下行:
typedef unsigned char UI_8;UI_8 TFTP_IP_NUMBERS [4];UI_8 TFTP_IP [15]; //应该是lige“192.168.12.30”sscanf(TFTP_IP,…
该 %d 格式说明符处理 int 你正在传递它 小 unsigned char ,也没有正确传递指针(两个错误)。
%d
int
unsigned char
int ip_parts[4]; sscanf( ip, "%d.%d.%d.%d", &ip_parts[0], &ip_parts[1], &ip_parts[2], &ip_parts[4] ) ;
你会直接写 unisigned char 使用 %hhd 格式说明符,但是 hh 所有库都不支持size修饰符,这将使代码的可移植性降低。您使用类型UI8_t这一事实表明您可能没有标准的uint8_t,因此可能没有使用符合C99的库或编译器 - 在这种情况下 %hhu 可能也行不通。
unisigned char
%hhd
hh
%hhu
UI8 ip_parts[4]; sscanf( ip, "%hhu.%hhu.%hhu.%hhu", &ip_parts[0], &ip_parts[1], &ip_parts[2], &ip_parts[4] ) ;