我试图在Windows上编译这个简单的例子。当我使用%F
这是%Y-%m-%d
的较长形式的快捷方式时,进程将中止而不显示任何错误消息。在Linux上,它在this live example shows on ideone.com中工作正常。有什么想法吗?
#include <stdio.h>
#include <time.h>
int main ()
{
time_t rawtime;
struct tm * timeinfo;
char buffer [80];
time (&rawtime);
timeinfo = localtime (&rawtime);
strftime (buffer,80,"Now it's %F.",timeinfo);
puts (buffer);
return 0;
}
答案 0 :(得分:7)
%F
是C99,请参阅strftime on man7或自行比较C99和C90标准。
strftime
和早期版本不符合C99,因为它们不接受格式说明符:MSDN VS2013 strftime
page
也许下一个版本会添加它,因为格式还没有用于其他任何东西......
只需使用它直接的快捷方式,即符合C89和VS2013的格式:%Y-%m-%d
引用从C标准传递给strftime
的无效格式说明符会发生什么:
6如果转换说明符不是上述之一,则行为未定义。