strftime%F在Windows上不起作用

Bri*_*ian 2 c++ linux windows cygwin visual-studio-2008

我试图在Windows上编译这个简单的例子.当我使用时%F,这是较长形式的快捷方式%Y-%m-%d,进程中止而没有错误消息.在Linux上,它运行正常,就像在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;
}
Run Code Online (Sandbox Code Playgroud)

Ded*_*tor 7

%F是C99,请参阅man7上的strftime或自己比较C99和C90标准.

strftime在VS2013库和早期版本不符合C99,因为他们不接受格式说明符:MSDN VS2013 strftime页面
也许下一个版本会添加它,因为格式不用于其他任何东西......

只需使用它直接的快捷方式,即C89和VS2013符合: %Y-%m-%d

引用strftime从C标准传递的无效格式说明符会发生什么:

6如果转换说明符不是上述之一,则行为未定义.

  • 是的,但不应该崩溃:) (4认同)