按照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;
}

10-02 10:36