我想更具体地了解一下,winapi *.*
的搜索模式中*
和FindFirstFile
之间的区别是什么?
GetWindowsDirectoryA( buffer2, sizeof(buffer2) );
strcat(buffer2, "\\*");
handle = FindFirstFileA(buffer2, &data);
答案 0 :(得分:5)
这些不是正则表达式。它们是基于通配符的简单搜索模式。
*
和*.*
之间实际上没有区别。这些通配符模式的规则可以追溯到DOS。 Raymond Chen在此解释了DOS规则:How did wildcards work in MS-DOS?因为*.*
与DOS中的*
相同,所以为了兼容性,在Win32中保留了这种等价。
但FCB匹配算法的一些怪癖仍然存在于Win32中,因为它们已成为惯用语。
例如,如果您的模式以
.*
结尾,则忽略.*
。如果没有这个规则,模式*.*
将仅匹配包含点的文件,这可能会破坏地球上所有批处理文件的90%,以及每个人的肌肉记忆,因为每个运行Windows NT 3.1的人都长大了在*.*
表示所有文件的世界中。