c - 我需要帮助来打印属于 WIN32_FIND_DATA 结构的属性

标签 c winapi

我正在尝试打印 WIN32_FIND_DATA 属性结构 ftCreationTime,因此我输入 %d 来打印它,但它给了我负数,我尝试了 %f,然后它给了我零,我需要帮助吗?

#include "stdafx.h"
#include <windows.h>
#include <stdio.h>

int _tmain(int argc, _TCHAR* argv[])
{
    FILETIME a ;
    WIN32_FIND_DATA x;
    HANDLE s=FindFirstFile(L"d:\\uni\\*.*",&x);
    if(s==INVALID_HANDLE_VALUE)
    {
        printf("Search failed!\n");
        return 0;
    }

    if((x.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ==0)
        _tprintf(L"The first file name is: %s\n",x.cFileName);
    else
        _tprintf(L"The first directory name is: %s\n",x.cFileName);


    while(FindNextFile(s,&x))
    {
        if((x.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) ==0)
            _tprintf(L"The file name is: %s and the size is %d %d\n",x.cFileName,x.nFileSizeLow , x.ftCreationTime);
        else
            _tprintf(L"The directory name is: %s\n",x.cFileName );

    }
    FindClose(s);
    return 0;
}

最佳答案

WIN32_FIND_DATA::ftCreationTime类型为 FILETIME 。您需要使用FileTimeToSystemTime()将其转换为系统时间,然后打印。

要打印SYSTEMTIME,您只需打印该结构的字段,就像打印 WIN32_FIND_DATA 结构一样。

SYSTEMTIME systemTime;
FileTimeToSystemTime(&x.ftCreationTime, &systemTime);
_tprintf(_T("The creation time is %02d-%02d-%d %02d:%02d:%02d\n"),
    systemTime.wMonth, systemTime.wDay, systemTime.wYear,
    systemTime.wHour, systemTime.wMinute, systemTime.wSecond);

关于c - 我需要帮助来打印属于 WIN32_FIND_DATA 结构的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9963672/

相关文章:

c - 为什么我的 C 循环双端队列程序无法退出打印功能?

c++ - 修改 GetCommandLine() 的命令行参数

c# - .NET 中的 ShellExecute 等价物

c - 为什么这个程序不能与 C 语言中的操作系统重定向命令一起使用?

c - 使用 libxml 函数进行错误处理

c - RegEnumValue 和 REG_MULTI_SZ 类型

winapi - 私有(private)堆或自行管理内存

c++ - 如何获取被覆盖窗口的像素?

c++ - gcc 中对函数的 undefined reference

c - 是否可以在 gdb 中确定线程是在内核空间还是用户空间中执行(或阻塞)?