我偶然发现:
sprintf(buffer, "%!ld ", date);
我知道 ld 是长整数,但是 ld 的目的是!
什么?我找不到任何关于此的参考,并且输出似乎与%ld
我的经典相似
编辑:显然在我的系统上它附加到变量字符串+to_date('01/01/1904','DD/MM/YYYY'))
......这确实用于查询数据库,因此它将日期转换为实际的oracle日期(我认为)。现在我将尝试看看这是否是一个特殊的 sprintf 以及它来自哪里
我偶然发现:
sprintf(buffer, "%!ld ", date);
我知道 ld 是长整数,但是 ld 的目的是!
什么?我找不到任何关于此的参考,并且输出似乎与%ld
我的经典相似
编辑:显然在我的系统上它附加到变量字符串+to_date('01/01/1904','DD/MM/YYYY'))
......这确实用于查询数据库,因此它将日期转换为实际的oracle日期(我认为)。现在我将尝试看看这是否是一个特殊的 sprintf 以及它来自哪里
据我所知,这对 printf 无效 - 或者会被忽略。我知道的唯一情况,您使用类似%!
Windows 上的 FormatMessage,请参阅http://msdn.microsoft.com/en-us/library/aa908810.aspx
这是一个无效的格式字符串。
我认为大多数 printf 实现在获取无效格式字符串时,将其%
视为文字,而不是特殊字符。所以它会打印%!ld
.
如果它对%ld
您有用,那么,正如一些评论所说,它可能是您平台的非标准扩展。
我认为它会打印 %!ld 因为这不是 C 中的有效格式说明符。