Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Поиск по всему диску 
:(
    Опции темы
_Nick_
Дата 31.5.2007, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 21.11.2006

Репутация: нет
Всего: нет



Код

#include <stdio.h>
#include <dir.h>
#include <conio.h>

int main(void)
{
   struct ffblk ffblk;
   int done;
   printf("Листинг каталога *.*\n");
   done = findfirst("*.*",&ffblk,0);
   while (!done)  {
     printf(" %s\n", ffblk.ff_name);
     done = findnext(&ffblk);
   }
   getch();
   return 0;
}

Как это поравить что б был поиск по всему диску, а не в текущей директории?
PM MAIL   Вверх
Sartorius
Дата 31.5.2007, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower

Репутация: 8
Всего: 37



рекурсивную функцию напиши. (Вызываешь себя если найденный элемент - каталог)
PM MAIL ICQ   Вверх
_Nick_
Дата 31.5.2007, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 41
Регистрация: 21.11.2006

Репутация: нет
Всего: нет



Я то алгоритм знаю у меня как раз таки проблема с реализацией
PM MAIL   Вверх
zkv
Дата 31.5.2007, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата



****


Профиль
Группа: Участник Клуба
Сообщений: 2133
Регистрация: 23.7.2006
Где: Санкт-Петербург

Репутация: 26
Всего: 92



Цитата(_Nick_ @  31.5.2007,  21:55 Найти цитируемый пост)
Я то алгоритм знаю у меня как раз таки проблема с реализацией 

и в чем проблема? smile 
Хочешь, чтобы за тебя написали?
PM MAIL   Вверх
nerezus
  Дата 31.5.2007, 22:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: 3
Всего: 43



а что это собственно за findfirst и т.д.? они из борландовского досовского компилера?

Попробуй рекурсивно, но придется немного подумать, если функция криво(с использованием статич. переменных) написана.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
MAKCim
Дата 1.6.2007, 08:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Воін дZэна
****


Профиль
Группа: Экс. модератор
Сообщений: 5644
Регистрация: 10.12.2005
Где: Менск, РБ

Репутация: 52
Всего: 207



тут
рекурсивное удаление директорий с содержимым для Linux на С
думаю, идея ясна
надо только переделать под свои нужды


--------------------
Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі ©

PM MAIL   Вверх
apook
Дата 1.6.2007, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 794
Регистрация: 12.7.2006

Репутация: 9
Всего: 23



Код

#include <iostream.h>

#include <windows.h>
#include <dir.h>

WIN32_FIND_DATA ffd; //FindFileData

void DelDir( char *DirName )
{
char *Temp=NULL;
HANDLE hr;

Temp=new char[ 10000 ];

if( strlen(DirName) )
{

strcpy( Temp, DirName );
strcat( Temp, "\\*.*" );

hr=FindFirstFile( Temp, &ffd );
if( hr != INVALID_HANDLE_VALUE )
{
do
{
    strcpy( Temp, DirName ); 
    strcat( Temp, "\\" );
    strcat( Temp, ffd.cFileName );

    if( (stricmp( ffd.cFileName, "." ) !=0)
    && (stricmp( ffd.cFileName, ".." ) !=0) )   // это удалять не надо
    {
        //if( ffd.dwFileAttributes ==FILE_ATTRIBUTE_DIRECTORY )
        if( (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) == FILE_ATTRIBUTE_DIRECTORY )
        {

            cout << "-+- DIRECTORIES -+- " << Temp << "\n";

            SetFileAttributes( Temp, 0 );   
            DelDir( Temp );                // рекурсивно удаляем содержимое
            RemoveDirectory( Temp );       // удаляем теперь уже пустую папку
            }
        else   // иначе найден файл
        {

            cout << "-+- FILES -+- " << Temp << "\n";
            SetFileAttributes( Temp, 0 ); 
            DeleteFile( Temp );            // удаляем файл
            }
        }    
      
      memset( Temp, NULL, strlen( Temp )*sizeof(char *) );

      } while( FindNextFile( hr, &ffd ) !=0 ); // ищем, пока не уничтожим все ! 
    }
    else
    {
        cout << "Error : " << DirName << " <-- No find this directory" << endl;
        }
   FindClose( hr );
   }
RemoveDirectory( DirName );
delete Temp;
return;
}


void main( void )
{

DelDir( "C:\\Windowss" ); // Укажи дректорий

return;
}



--------------------
Мои руки из дуба, голова из свинца ну и пусть ...
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0469 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.