Да ладно, держите сразу для windows и linux  Вообще, люблю интероперабельно делать сразу 
| Код | /* Пожалуйста, сошлитесь на www.vingrad.ru если будете использовать код! http://vingrad.ru/@sergej.z :) */ #include <stdio.h> #ifdef _WIN32 #include "windows.h" #else #include <dirent.h> #endif /* WIN32 */
void listFiles(const char* dir_name);
int main (int nNumberofArgs, char* pszArgs[]) { //передаём имя начальной директории сюда :) // здесь будет распечатана директория в которой сама прога находится будет listFiles(".");
//А здесь содержимое папки /usr listFiles("/usr"); return 0; }
void listFiles(const char* dir_name) {
#ifdef _WIN32 HANDLE hnd; WIN32_FIND_DATA find; char tmp[512]; sprintf(tmp,"%s/*",dir_name); #else DIR* directory; struct dirent* dir_entry; #endif #ifdef _WIN32 if((hnd = FindFirstFile(tmp, &find)) == INVALID_HANDLE_VALUE) { printf("Файла не существует!"); return; }
#else if((directory = opendir(dir_name)) == NULL) { printf("list(): Can't open directory\n"); return; } #endif
#ifdef _WIN32 while(FindNextFile(hnd, &find)) {
printf("%s\n",find.cFileName); }
FindClose(hnd); #else dir_entry = readdir(directory); dir_entry = readdir(directory);
while((dir_entry = readdir(directory)) != NULL) { printf("%s\n",dir_entry->d_name); } closedir(directory); #endif }
| |