【发布时间】:2014-03-04 10:04:50
【问题描述】:
我得到一个这样的字符串:
111222abcd12ae
我想将它拆分为 4 个数值变量,并且我想用 sscanf 在单个代码行中完成它。
这就是我到目前为止所尝试的:
sscanf(mystring, "%3d%3d%4x%4x", &v1, &v2, &v3, &v4)
如你所见
- v1 应该存储 chars 0 到 2 的十进制值
- v2 应该存储 chars 3 到 5 的十进制值
- v3 应该存储 chars 6 到 9 的 hexa 值
- v4 应该存储 chars 10 到 13 的十六进制值
实际结果:只设置了v4。
如何修复我的格式字符串以获得我想要的?
更新
我发现了问题...我已将变量声明为 unsigned short 而不是 int(对于 %d)和 unsigned int(对于 %x),我得到了一个意想不到的结果。
【问题讨论】:
-
printf("%3d %3d %4x %4x", v1, v2, v3, v4);我得到111 222 abcd 12ae