0

我在 C90 的基础上在 LabCVI 工作。

手头的坦克是在“..\data”目录和子目录中找到“*.spec”文件的绝对路径。

我知道有解释我如何使用 dirent.h 来做到这一点,但我需要在没有 dirent.h 的情况下做到这一点。这个(第一部分第二部分)教程不是我想要的。LabCVI 没有 dirent 标头,我无法从Internet导入 ist,因为 dirent.h 的依赖项与 LabCVI 不兼容。

一旦我杀死了对 LabCVI 的所有依赖项,我计划迁移到更好的 IDE/Language,但我必须让代码保持兼容。所以我不能使用 LabCVI 的目录工具。

我该如何解决这个问题并获得我的目录访问权限?(代码将在 XP 机器上运行。)

4

3 回答 3

4

C 语言本身没有目录的概念,因此无法列出或访问它们。如果您的系统不符合更高级别的标准,例如 POSIX(指定dirent.h),那么您需要寻找特定于系统的解决方案。

于 2011-01-03T17:07:30.147 回答
1

您可以使用FindFirstFile和类似的功能来执行此操作。检查此示例代码以获取更多详细信息:http: //msdn.microsoft.com/en-us/library/aa365200%28v=vs.85%29.aspx

于 2011-01-03T17:31:06.463 回答
1

Vikram 的回答让我写了这个我使用的代码片段。

void findSpecFilesAndPrint(void){
    HANDLE hFind;
    WIN32_FIND_DATA FindFileData;

    hFind = FindFirstFile("*.*", &FindFileData);
    if (hFind == INVALID_HANDLE_VALUE){ 
        //FOUND NO FILE
        printf("No file found.\n");
    }
    else {
        printf("Files found - one function to find them all.\n");
        do{
            //DO THIS WITH ALL FILES FOUND
            printf(FindFileData.cFileName);
            printf("\n");
        }while (FindNextFile(hFind, &FindFileData) != 0);
        printf("And in the darkness bind them.\n");
        FindClose(hFind);
    }
}

查找当前目录中的所有文件

于 2011-01-04T09:35:44.497 回答