Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вывод всех файлов и папок заданной директории

990
08 января 2009 года
Stalcer
137 / / 15.08.2004
Казалось бы простая задача на Си. Задается директория, программа рекурсивно в консоли выводит все файлы и папки с путями, содержащиеся в онной, обход в глубь. Но проблема в том, что тестовый пакет содержит файлы и папки с очень длинными названиями, больше 256 символов, соответственно программа ругается. Подскажите элегантное решение на Си.
5
08 января 2009 года
hardcase
4.5K / / 09.08.2005
Цитата: Stalcer
Подскажите элегантное решение на Си.

ps. или на c#


Вы всетакие определитесь какой язык изучаете. C и C# имеют совсем мало общего.

990
08 января 2009 года
Stalcer
137 / / 15.08.2004
Цитата: hardcase
Вы всетакие определитесь какой язык изучаете. C и C# имеют совсем мало общего.



Желательна реализация на Си. Заранее спасибо за помощь.

990
11 января 2009 года
Stalcer
137 / / 15.08.2004
Подскажите, пожалуйста, хотя-бы в каком направлении двигаться...
307
11 января 2009 года
Artem_3A
863 / / 11.04.2008
Цитата: Stalcer
Подскажите, пожалуйста, хотя-бы в каком направлении двигаться...



Код:
HANDLE hf;
    hf = FindFirstFileA(searchAdress, &fn);
    if(hf!=INVALID_HANDLE_VALUE)
    {
        do
        {
       
                if((fn.dwFileAttributes&FILE_ATTRIBUTE_DIRECTORY) != FILE_ATTRIBUTE_DIRECTORY)
                    continue;
                if(strcmp(fn.cFileName, ".")==0)
                    continue;
                if(strcmp(fn.cFileName, "..")==0)
                    continue;
                char* newAdress;
                int len = 261 + strlen(searchAdress);
                newAdress = new char[len];
                strcpy(newAdress, searchAdress);
                for(int i=0; i<strlen(newAdress); i++)
                {
                    if((newAdress=='*') || (newAdress=='\0'))
                    {
                        newAdress='\0';
                        break;
                    }
                }
                strcat(newAdress,fn.cFileName);
                int size = strlen(newAdress);
                newAdress[size]='\\';
                newAdress[1+size]='*';
                newAdress[2+size]='\0';
                searchHiddenFile(newAdress);
                delete [] newAdress;
        }while(FindNextFileA(hf, &fn)!=0);
        FindClose(hf);
    }


Вот мой очень старый код, он оч старый и выдран из проекта, возможно он тебе поможет!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог