「C言語/C++/dirtest」の編集履歴(バックアップ)一覧はこちら
「C言語/C++/dirtest」(2016/11/15 (火) 11:58:37) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
|開発環境|Visual C++ 2015|
|実行環境|Windows 10 Home 64bit|
|プロジェクトの種類|Win32 Console Application|
|プロジェクト名|dirtest|
|追加のオプション|Empty project|
dirtest.cpp
#highlight(cpp){{
#include <fcntl.h> // _O_WTEXT
#include <io.h> // _setmode
#include <stdio.h> // _fileno
#include <stdlib.h>
#include <wchar.h>
int wmain(int argc, wchar_t *argv[])
{
_setmode(_fileno(stdout), _O_WTEXT);
_setmode(_fileno(stderr), _O_WTEXT);
wchar_t dir[_MAX_PATH] = L"";
if (argc == 2) {
size_t len = wcslen(argv[1]);
if (_MAX_PATH - 5 < len) {
fwprintf(stderr, L"error: ディレクトリが長過ぎます。\n");
return 1;
}
wcscpy_s(dir, argv[1]);
if (0 < len && dir[len - 1] != L'\\') {
wcscat_s(dir, L"\\");
}
}
wcscat_s(dir, L"*.*");
struct _wfinddata_t fi; // fileinfo
intptr_t handle = _wfindfirst(dir, &fi);
if (handle == -1) {
fwprintf(stderr, L"error: 検索に失敗しました。\n");
return 1;
}
do {
wprintf(L"%04x %llu %10u %s\n",
fi.attrib, // 属性
fi.time_write, // 更新日時
fi.size, // サイズ
fi.name); // 名前
} while (_wfindnext(handle, &fi) == 0);
_findclose(handle);
return 0;
}
}}