什么是sprintf(“%!ld”)?

时间:2012-05-16 12:47:01

标签: c visual-c++ printf

我偶然发现:

sprintf(buffer, "%!ld ", date);

我理解ld是长整数,但是!的目的是什么?我找不到任何关于此的参考,输出似乎与我的经典%ld类似

编辑:显然在我的系统上它将变量追加到字符串+to_date('01/01/1904','DD/MM/YYYY')) ...这确实用于查询数据库,因此它将日期转换为实际的oracle日期(我认为)。 现在,我将尝试查看这是否是一个特殊的sprintf以及它来自哪个

3 个答案:

答案 0 :(得分:3)

据我所知,这对printf无效 - 或者只会被忽略。我所知道的唯一情况是,使用%!之类的东西是Windows上的FormatMessage,请参阅http://msdn.microsoft.com/en-us/library/aa908810.aspx

答案 1 :(得分:2)

这是一个无效的格式字符串。

我认为大多数printf实现在获取无效的格式字符串时,将%视为文字,而不是特殊字符。因此它将打印%!ld

如果它对你来说像%ld那样有效,那么,正如一些评论所说,也许它是你平台的非标准扩展。

答案 2 :(得分:0)

我认为它会打印%!ld,因为这不是C中的有效格式说明符。