所以我知道(经过大量令人困惑的谷歌搜索),要正确填充字符串,可以使用fprintf(“% - 10s”,字符串)或类似的东西来填充最多10个长度的空格。 / p>
所以我有两个问题:
我知道左边的垫子很相似,但它的语法是什么? (对不起,我做了google,但是由于相互矛盾的答案而感到困惑......)
更重要的是,我如何正确填充十六进制?假设我有一个int我想用%02X转换为十六进制。我还能使用%-1002X吗?不会搞砸了吗?
答案 0 :(得分:1)
printf
转换格式允许您左键填充或右键填充转换结果,但不能同时使用两者。右填充整数转换与右填充其他任何东西相同 - 只需指定负字段宽度,如%-10x
。您不能同时使用左键盘和右键盘:您只能在格式中指定一个宽度。您的原始%02x
已明确使用左边距。你无法在其上添加右边填充。
但是,%02x
的目的似乎是产生至少有2位数的零填充输出。这可以通过使用格式的 precision 组件而不是 width 来实现。像%.2x
这样的格式也会成功生成2位十六进制转换。
通过使用精度而不是宽度,可以保留宽度以用于填充。例如。像%-10.2x
这样的格式会产生2位数的转换(用零填充),右边用空格填充10个字符。
答案 1 :(得分:0)
尝试
printf("Hex %8.8x", someInt);
或者使用fprintf()
,sprintf()
,snprintf()
,无论如何...如果您使用十六进制字符串,请使用snprintf() %-8s
格式说明符,用于将转换捕获到char *缓冲区,然后使用for循环或用'0'字符替换空格。