Часовой пояс: UTC + 3 часа




Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 6 
  Пред. тема | След. тема 
В случае проблем с отображением форума, отключите блокировщик рекламы
Автор Сообщение
 

Member
Статус: Не в сети
Регистрация: 12.03.2003
Откуда: Израиль
Оказалось, что findfirst/findnext - изобретение Мелкософта и под Линухом такого нет... :(
Вопрос: как сделать поиск по директории под Линухом?
Необходимо получить имена всех файлов в директории.

Желательно, чтобы тот же код работал (после перекомпиляции, естественно) как под Линух, так и под Win.

_________________
Более мощный компьютер глючит быстрее и точнее.



Партнер
 

Member
Статус: Не в сети
Регистрация: 14.08.2003
Откуда: Питер
WhPh
Подобное обсуждается в соседней ветке

_________________
Лучшая зашита - это нападение.


 

Member
Статус: Не в сети
Регистрация: 12.03.2003
Откуда: Израиль
Halfback
Ээээ... Ты, случаем, не о ветке про Дельфи говоришь? ;)
Мне же надо под Линух...

_________________
Более мощный компьютер глючит быстрее и точнее.


 

Advanced member
Статус: Не в сети
Регистрация: 09.06.2003
Откуда: USSR
В Паскале под _NIX есть FindFirst если я не ошибаюсь :).


 

Member
Статус: Не в сети
Регистрация: 30.04.2004
Откуда: [Omsk Team]
WhPh
Код:
/*This sample prints out the current directory, and then recurses through subdirectories.*/

#include <unistd.h>
#include <stdio.h>
#include <dirent.h>
#include <string.h>
#include <sys/stat.h>

void ScanDir(char *dir, int indent)
{
    DIR *dp;
    struct dirent *dir_entry;
    struct stat stat_info;

    if((dp = opendir(dir)) == NULL) {
        fprintf(stderr,"cannot open directory: %s\n", dir);
        return;
    }
    chdir(dir);
    while((dir_entry = readdir(dp)) != NULL) {
        lstat(dir_entry->d_name,&stat_info);
        if(S_ISDIR(stat_info.st_mode)) {
            /* Directory, but ignore . and .. */
            if(strcmp(".",dir_entry->d_name) == 0 ||
                strcmp("..",dir_entry->d_name) == 0)
                continue;
            printf("%*s%s/\n",indent,"",dir_entry->d_name);
            /* Recurse at a new indent level */
            ScanDir(dir_entry->d_name,indent+4);
        }
        else printf("%*s%s\n",indent,"",dir_entry->d_name);
    }
    chdir("..");
    closedir(dp);
}

int main(int argc, char* argv[])
{
    char *topdir, defaultdir[2]=".";
    if (argc != 2) {
         printf("Argument not supplied - using current
           directory.\n");
         topdir=defaultdir;
    }
    else
        topdir=argv[1];
    printf("Directory scan of %s\n",topdir);
    ScanDir(topdir,0);
    printf("done.\n");

    exit(0);
}


_________________
forum.omskteam.ru- Все о керамограните


 

Member
Статус: Не в сети
Регистрация: 12.03.2003
Откуда: Израиль
Dilon
Оно! Спасибо! :beer:

_________________
Более мощный компьютер глючит быстрее и точнее.


Показать сообщения за:  Поле сортировки  
Начать новую тему Новая тема / Ответить на тему Ответить  Сообщений: 6 
-

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB | Kolobok smiles © Aiwan