C win32-如何从文件夹中随机选择一个文件



我有一个c:\config文件夹,其中包含几个配置文件(config_x)。我希望能够随机选择其中一个(程序是用C编写的)。文件数量将来可能会更改,因此需要能够查询文件夹中的文件数量。

如何做到这一点?

  • 使用FindFirstFileFindNextFile生成文件夹中文件的列表
  • 生成一个介于0和文件数之间的随机数,然后从列表中选择该索引

MSDN提供了一个列出文件的示例。

在循环中使用FindFirstFileFindNextFile。记下到目前为止您看到的文件数量(n)。在每个循环中,随机爆发1:n机会:

if(INVALID_HANDLE_VALUE!=(hFind = FindFirstFile(DirSpec, &FindFileData))) {
    for(i=0;;++i) {
        strcpy(fileChoice, FindFileData.cFileName);
        while(rand_s(&r));
        if( ((double)r) / ((double)i) < 1.0 ) break;
        if(!FindNextFile(hFind, &FindFileData)) break;
    }
}

你可以在Donald E.Knuth的《计算机编程艺术》第2卷第3.4.2节中找到这种方法的证明。

相关内容

  • 没有找到相关文章

最新更新