簡體   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