繁体   English   中英

没有dirent.h的情况下如何访问C90中的目录?

[英]How can i access directories in C90 without dirent.h?

我在基于C90的LabCVI中工作。

当前的储罐将在“ .. \\ data”目录和子目录中找到“ * .spec”文件的绝对路径。

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

一旦我杀死了对LabCVI的所有依赖关系,我计划迁移到更好的IDE /语言,但是那天我必须保持代码的可移植性。 所以我不能使用LabCVI的目录实用程序。

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

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

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

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);
    }
}

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM