0

私はC90に基づいてLabCVIで働いています。

手元にあるタンクは、「..\data」ディレクトリとサブディレクトリにある「*.spec」ファイルの絶対パスを見つけることです。

dirent.hでこれを行う方法についての説明があることは承知していますが、dirent.hなしで行う必要があります。この(パートIパートII)チュートリアルは、私が探しているものではありません。LabCVIはdirentヘッダーを備えておらず、dirent.hの依存関係がLabCVIと互換性がないため、インターネットからistをインポートできません。

LabCVIへのすべての依存関係を削除したら、より優れたIDE /言語に移行する予定ですが、その日までコードをキャンプ可能に保つ必要があります。そのため、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 に答える