如何在C语言中打印 'off_t'?
如何在C语言中打印 'off_t'?
可能重复:
我正在使用fstat(stream, &fs)
在C中获取文件大小,它返回类型为off_t
。
只是打印会产生警告:
format ‘%d’ expects type ‘int’, but argument has type ‘off_t’
有没有办法在没有编译器错误的情况下打印这个值?
在C语言中如何打印'off_t'?
在C语言中,偏移类型通常是长整型。需要将其强制转换后再进行打印。
实际类型off_t在sys/types.h中定义。可以查阅该文件了解其具体类型。
需要注意的是,这种方法不具有可移植性;在不同的系统上,off_t可能具有不同的类型。
POSIX定义off_t是有符号的,虽然将其转换为足够大的无符号类型不会造成任何损害,但需要确保读取输出的人知道这一点。
原文中想要表达的是“长整型”,而不是无符号类型。已经进行了修正,谢谢。
对于支持大文件的32位系统,off_t可能是long long而不仅仅是long。如你所说,对于非可移植的解决方案,可以检查sys/types.h并根据实际情况使用正确的格式。