我有点坚持如何使它工作,我需要从用户获得8位十六进制数字。我试图只获得前8位数,如果用户输入超过8位
scanf("%8x", iPtr); //iPtr is an int pointer that's why i don't use &.
如果用户未在开头键入:0x
,但如果他们输入:0xffffffffffff
,则此功能正常
iPtr的结果是:0x00FFFFFF
它会在0
s ...
F
个
如果我只使用%x
,它会正常工作,但会获得最后8位数字。我想要前8位......
答案 0 :(得分:2)
格式字符串中的8
表示从输入中读取最多8个字符。因此,如果输入为0xffffffffff
,则输入序列为0xffffff
,与您获得的输出相匹配。 (我假设您在printf格式字符串中使用了%08x
,否则您将在输出中看不到额外的零。
不幸的是,没有scanf
选项的组合意味着“如果以0x
或0X
开头,则读取10个字符,否则读取8个字符”。您必须使用其他输入函数自己实现该逻辑。