2009-05-19 4 views
3

Я использовал этот вид кода в моем Dev-CPP перед:Microsoft Visual Studio: opendir() и readdir(), как?

if((dh = opendir(folder)) !== false){ 
    while((file = readdir(dh)) !== false){ 
     // do my stuff 
    } 
    closedir(dh); 
} 

Но теперь я использую MSVC++, и я не знаю, как добавить эти файлы там, я пытался копировать dirent.h/реж .h/errno.h там, но он дает еще одну ошибку, связанную с другими включенными файлами внутри этих файлов ..., и, просматривая файлы, я вижу mingw материал там, поэтому его компилятор связан? idk, какой использует компилятор MSVC++, но возможно ли скопировать эти файлы в MSVC++ и заставить его работать?

Я попытался посмотреть код из MSDN, но это было действительно перепутались, поэтому им надеясь, что я мог бы использовать эти функции выше ...

+0

Разве это не PHP-код? Этот оператор сравнения недоступен в C. – OregonGhost

+0

lol да, я тоже это заметил, но версия C совершенно одинакова ... – 2009-05-20 11:22:18

ответ

1

Ответ на этот вопрос во многом зависит от целевой платформы, которую вы» re компиляция для.

MSVC++ - это компилятор, поэтому я собираюсь предположить, что вы пытаетесь выполнить аналогичные действия, такие как opendir() и readdir() на платформе Windows. В этом случае обратите внимание на следующие ресурсы:

Вторая ссылка является страница MSDN в котором перечислены все функции, доступные на API платформы Windows для взаимодействовать с файловой системой. Вы обнаружите, что большинство операций с файлами в Windows начинаются с вызова функции CreateFile.

2

Великий, это не было так трудно в конце концов, я должен был использовать делать-то время цикла, хотя:

HANDLE hFind; 
WIN32_FIND_DATA FindFileData; 

if((hFind = FindFirstFile("C:/some/folder/*.txt", &FindFileData)) != INVALID_HANDLE_VALUE){ 
    do{ 
     printf("%s\n", FindFileData.cFileName); 
    }while(FindNextFile(hFind, &FindFileData)); 
    FindClose(hFind); 
} 

Это действительно лучше, потому что я могу использовать «* .txt» и т.д., делает его гораздо более легче найти некоторые конкретные типы файлов, ранее я должен был написать собственную функцию соответствия для этого: D

7

Если вам нужен быстрый спад-замены, вы также можете использовать:

http://www.two-sdg.demon.co.uk/curbralan/code/dirent/dirent.html

Простой класс, который я нашел, который использует POSIX API для Win32

+2

Это НЕ замена для POSIX-дирента. Мало того, что структура DIR отсутствует в d_type, но в заголовке отсутствует целая группа определений. Это хорошая отправная точка, но она не может использоваться для чего-либо, что хочет различать файл и каталог! – nevelis

+0

это выглядит лучше: https://svn.apache.org/repos/asf/avro/trunk/lang/c/tests/msdirent.h –

+0

@nevelis POSIX не указывает член 'd_type', это общее расширение, но не часть POSIX. –

Смежные вопросы