我正在尝试打印 off_t
和 size_t
等类型。 printf()
可移植 的正确占位符是什么?
或者是否有一种完全不同的方式来打印这些变量?
最佳答案
打印off_t
:
printf("%jd\n", (intmax_t)x);
打印size_t
:
printf("%zu\n", x);
打印ssize_t
:
printf("%zd\n", x);
参见C99标准中的7.19.6.1/7,或者更方便的格式化代码的POSIX文档:
http://pubs.opengroup.org/onlinepubs/009695399/functions/fprintf.html
如果您的实现不支持这些格式代码(例如,因为您使用的是 C89),那么您会遇到一些问题,因为据我所知,C89 中没有具有格式代码并保证和这些类型一样大。所以你需要做一些特定于实现的事情。
例如,如果您的编译器有 long long
并且您的标准库支持 %lld
,您可以自信地期望它将代替 intmax_t
。但如果不是,您将不得不回退到 long
,这在其他一些实现上会失败,因为它太小了。
关于c - 我应该如何打印像 off_t 和 size_t 这样的类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/586928/