Cercando di emulare il comportamento del comando Dir su windows mi sono imbattuto in uno strano problema: la data di ultima scrittura stampata dal mio programma è differente da quella stampata dal comando Dir!
Posto il codice:
Facendolo girare non solo mi sbaglia l'orario ma anche il giorno,almeno al confronto con l'output di Dir!codice:char* tp; LPWIN32_FIND_DATA data=malloc(sizeof(WIN32_FIND_DATA)); LPSYSTEMTIME time=malloc(sizeof(SYSTEMTIME)); HANDLE f=FindFirstFile("/*",data); FileTimeToSystemTime(&((*data).ftLastWriteTime),time); if((*data).dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY) tp="<DIR>"; else tp=" "; printf("%d/%d/%d %02d.%02d %s %d %s\n",(*time).wDay,(*time).wMonth,(*time).wYear,(*time).wHour,(*time).wMinute,tp,(*data).nFileSizeLow,(*data).cFileName); while(FindNextFile(f,data)){ FileTimeToSystemTime(&((*data).ftLastAccessTime),time); if((*data).dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY) tp="<DIR>"; else tp=" "; printf("%d/%d/%d %02d.%02d %s %d %s\n",(*time).wDay,(*time).wMonth,(*time).wYear,(*time).wHour,(*time).wMinute,tp,(*data).nFileSizeLow,(*data).cFileName);}
Ho letto che di default Dir stampa la data di ultima scrittura, e in effetti guardando bene quella stampata da Dir coincide con le mie operazioni.
Come mai??

Rispondi quotando