我使用 dirent 生成文件列表,但我开始担心包含 unicode 字符的目录和文件。
void recurse_dir(char *dir)
{
DIR* d;
d = opendir(dir);
struct dirent* ent;
unsigned short int dir_size = strlen(dir), tmp_dir_size;
if(d != NULL)
{
while((ent = readdir(d)) != NULL)
{
if(ent->d_type == DT_DIR)
{
if(!strcmp(ent->d_name,".") || !strcmp(ent->d_name,".."))
continue;
folder_count++;
char tmp_dir[dir_size + strlen(ent->d_name) + 2];
tmp_dir[0] = '\0';
strcat(tmp_dir,dir);
strcat(tmp_dir,"/");
strcat(tmp_dir,ent->d_name);
recurse_dir(tmp_dir);
}
else
{
file_count++;
file_strs_size += dir_size + strlen(ent->d_name) + 2;
fprintf(list_fp, "%s/%s\n",dir, ent->d_name);
}
}
}
closedir(d);
}
有没有办法让我以宽字符串格式获取 ent->d_name?