Мне нужна помощь Чтобы распечатать атрибут принадлежат структуре WIN32_FIND_DATA - PullRequest
0 голосов
/ 01 апреля 2012

Я пытаюсь напечатать структуру атрибутов 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;
}

1 Ответ

1 голос
/ 01 апреля 2012

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...