下面的代码打印ffffffffff
。
我需要输出长度为 16 位的 000000ffffffffff
并带有前导零。 var1
和 var2
变量可以不同,因此我没有必要只填充 6 个零。我只需要输出前导零的 16 位数字。我应该如何进行?
#include <stdio.h>
int main() {
int var1 = 1048575;
int var2 = 1048575;
char buffer[100];
sprintf(buffer, "%x%x", var1, var2);
printf("%s\n", buffer);
return 0;
}
最佳答案
您可以分两步完成:
#include <stdio.h>
int main(void) {
int var1 = 1048575;
int var2 = 1048575;
int length = 0;
char buffer[100];
char paddedbuffer[100] = "000000000000000";
length = sprintf (buffer, "%x%x", var1, var2);
char* here = length < 16 ? paddedbuffer + 16 - length : paddedbuffer;
sprintf(here, "%s", buffer);
printf("%s\n", paddedbuffer);
return 0;
}
某处可能有更优雅的解决方案。
另一种可能性是将您的结果转换为整数,然后sprintf
使用字段宽度对其进行处理,或者首先计算最右边数字的实际位数。
关于c - sprintf 在 C 中前导零填充,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34703806/