我有一个 c:\ config 文件夹,其中包含多个配置文件(config_x)。 我希望能够随机选择其中一个(程序用C语言编写)。 文件数量可能会在将来发生变化 - 因此需要能够查询文件夹中的文件数量。
怎么做?
答案 0 :(得分:2)
FindFirstFile
和FindNextFile
构建文件夹答案 1 :(得分:1)
在循环中使用FindFirstFile
和FindNextFile
。记住你到目前为止看到的文件数量(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节”中找到这种方法的证明。