【发布时间】:2017-04-05 19:49:21
【问题描述】:
嘿。
我正在尝试列出一个包含非英文字符文件的文件夹。
下面的函数接受一个参数,比如C:\ 并列出其中的文件。但不是 100% 正确。对于土耳其语字符,它会打印一些符号,即使我使用了 wchar_t 类型。
void listFolder(const wchar_t* path){
DIR *dir;
struct _wdirent *dp;
wchar_t * file_name;
wchar_t fullpath[MAX_PATH];
dir = _wopendir(path);
while ((dp=_wreaddir(dir)) != NULL) {
//printf("[i]debug: \t%s\n", dp->d_name);
if ( !wcscmp(dp->d_name, L".") || !wcscmp(dp->d_name, L"..") ){
// do nothing
}
else {
file_name = dp->d_name; // use it
wprintf(L"[*]file_name: \t\"%ls\"\n",file_name);
}
}
_wclosedir(dir);
}
我目前正在使用带有 CodeBlocks 16.01 的 Windows 7 x64
奇怪的是,相同的功能在带有 CodeBlocks 的 Ubuntu 16.04 下工作得非常好。
【问题讨论】:
-
这是 Windows 控制台的正常行为,请参阅stackoverflow.com/questions/15827607/… 您需要将代码页更改为支持要打印的字符的代码页