4

我偶然发现:

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

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

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

4

3 回答 3

3

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

于 2012-05-16T12:58:16.547 回答
2

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

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

如果它对%ld您有用,那么,正如一些评论所说,它可能是您平台的非标准扩展。

于 2012-05-16T12:55:56.863 回答
0

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

于 2012-05-16T13:06:55.277 回答