问题
在Windows C应用程序中,我想验证传递给函数的参数以确保指定的路径存在。
如何在C语言中检查Windows上的目录是否存在?
* 我知道你可能会遇到竞态条件,在你检查路径是否存在和使用路径之间的时间内,路径可能已经不存在了,但我可以解决这个问题。
附加背景
当涉及到权限时,明确地知道一个目录是否存在可能会变得棘手。尝试确定目录是否存在时,进程可能无权访问目录或父目录。对于我的需求来说是可以接受的。如果目录不存在或者我无法访问它,两种情况都被视为应用程序中的无效路径错误,所以我不需要区分它们。如果您的解决方案提供了这种区别,那就更好了。
任何使用C语言、C运行时库或Win32 API的解决方案都可以,但最好使用通常加载的库(例如kernel32、user32等),并避免涉及加载非标准库的解决方案(例如Shlwapi.dll中的PathFileExists)。同样,如果您的解决方案是跨平台的,则获得(虚拟)奖励分。