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