Как я могу получить доступ к каталогам в C90 без dirent.h? - PullRequest
0 голосов
/ 03 января 2011

Я работаю в LabCVI на базе C90.

Резервные резервуары найдут абсолютные пути к файлам "* .spec" в каталоге и подкаталогах ".. \ data" ".

Я знаю, что есть объяснениякак я могу сделать это с dirent.h, но мне нужно сделать это без dirent.h. Этот ( часть I , часть II ) учебник не то, что я ищу.LabCVI не имеет заголовка dirent, и я не могу импортировать ist из Internet , потому что зависимости dirent.h несовместимы с LabCVI.

Я планирую перейти на лучший IDE / Language один разя убил все зависимости от LabCVI, но я должен сохранить код пригодным для использования в тот день. Поэтому я не могу использовать утилиты каталогов LabCVI.

Как я могу обойти это и получить доступ к каталогу? (The Codeбудет работать на машинах XP.)

Ответы [ 3 ]

4 голосов
/ 03 января 2011

Сам язык Си не имеет понятия о каталогах и, следовательно, не имеет никакого способа перечислять или получать к ним доступ. Если ваша система не соответствует высокоуровневому стандарту, такому как POSIX (в котором указан dirent.h), вам нужно будет найти решение для конкретной системы.

1 голос
/ 04 января 2011

Ответ Викрама привел меня к написанию этого кода, который я использовал.

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

Находит все файлы в текущем каталоге

1 голос
/ 03 января 2011

Вы можете использовать FindFirstFile и аналогичные функции для этого. Проверьте этот пример кода для более подробной информации: http://msdn.microsoft.com/en-us/library/aa365200%28v=vs.85%29.aspx

...