按照here的答案,我想看看snprintf使用多少字节。以下代码
#include "stdio.h"
int main() {
printf("%d\n", snprintf(NULL, 0, "%d:%llx:%d:%llx:%llx:%llx", 0, 0, 0, 0, 0, 0));
printf("%d\n", snprintf(NULL, 0, "%d:%llx:%d:%llx:%llx:", 0, 0, 0, 0, 0));
printf("%d\n", snprintf(NULL, 0, "%llx", 0));
return 0;
}
退货
22
10
1
我不明白在其他数据末尾的%llx如何使用12个字节,而如果单独使用则仅使用1个字节。 snprintf是否进行字节对齐?
最佳答案
您的代码中有一个错误。 %llx
格式说明符仅用于long long
。尝试:
#include "stdio.h"
int main() {
printf("%d\n", snprintf(NULL, 0, "%d:%llx:%d:%llx:%llx:%llx", 0, 0LL, 0LL, 0LL, 0LL, 0LL));
printf("%d\n", snprintf(NULL, 0, "%d:%llx:%d:%llx:%llx:", 0, 0LL, 0LL, 0LL, 0LL));
printf("%d\n", snprintf(NULL, 0, "%llx", 0LL));
return 0;
}