我正在尝试打印 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/