我想更具体地了解winapi *.*的搜索模式中*FindFirstFile有什么区别?

GetWindowsDirectoryA( buffer2, sizeof(buffer2) );
strcat(buffer2, "\\*");
handle = FindFirstFileA(buffer2, &data);

最佳答案

这些不是正则表达式。它们是基于通配符的简单搜索模式。

实际上,**.*之间没有区别。这些通配符模式的规则可以追溯到DOS。 Raymond Chen在这里解释了DOS规则:How did wildcards work in MS-DOS?因为*.*与DOS中的*相同,所以为了兼容起见,在Win32中保留了此等效项。


  但是,由于FCB匹配算法的某些怪癖已成为习惯用法,因此它们仍保留在Win32中。
  
  例如,如果您的模式以.*结尾,则.*将被忽略。没有此规则,模式*.*将仅匹配包含点的文件,这可能会破坏地球上所有批处理文件的90%以及每个人的肌肉内存,因为每个运行Windows NT 3.1的人都在一个文件中长大。 *.*表示所有文件的世界。

08-06 00:14