0

我正在编写一个快速实用程序来转储结构的一些细节,stat但遇到了一个问题,因为时间属性stat似乎是timestruc_t在我的平台上似乎是两个 64 位整数的类型。

struct stat statBuf;
return_code = stat( aFileName, &statBuf );
if ( !return_code )
{
    struct tm res;
    localtime_r( statBuf.st_mtim.tv_sec, &res ); // problem!

我想我也许可以localtime_r用来将 seconds 属性转换为 astruct tm但我似乎在使用statBuf.st_mtim.tv_sec第一个参数时遇到了强制转换问题。

我敢肯定这不是最好的解决方案——也许你知道一个更好的解决方案。我只想将日期和时间——如果可能的话,降到亚秒级——以格式YYYY-MM-DD HH.MM.SS.SSS或类似格式的字符串形式输出。任何建议都会非常受欢迎。

更新

这是一个简单的问题——我的错误。只是忘记了第一个参数需要是地址int不是int值。所以修改和部分完成的代码如下所示:

    localtime_r( &statBuf.st_mtim.tv_sec, &res );
    const int bufLen=24;
    char buffer[ bufLen + 1];
    strftime( buffer, bufLen, "%Y-%m-%d %H:%M:%S", &res );
    printf("  %s, %s\n", aFileName, buffer);
4

1 回答 1

-1

第一个参数需要是地址而不是intint值。

于 2012-07-23T14:14:32.373 回答