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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с файлами в С\С++, Помогите разобраться!!! 
:(
    Опции темы
karas
  Дата 25.8.2005, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 25.8.2005
Где: Запорожье

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



Помогите разобраться!!!
Почему не работает код(не удаляются папки и файлы)? smile
Код

#include <stdio.h>    // Здесь находятся функции переименования и удаления
#include <io.h>       // Здесь находятся функции для поиска файлов
#include <string.h>  
#include <windows.h> 
#include <iostream.h> 
#include <direct.h> 


// Максимальная длина пути к файлу
#define MAX_PATH 260
// Размер вспомогательных массивов
#define Size 50

    _finddata_t find;

char* RussianMessage(char path[]){
    CharToOem(path,path);
    return path;
}

void RemoveFile(_finddata_t *f) // Удалить существующий файл
{
    char Name[MAX_PATH];
    // Что будем удалять?
    strcpy(Name, f->name);
    // Функция remove из stdio.h удаляет файл с указанным именем. Возращает
    // НЕНУЛЕВОЕ значение, если попытка удаления оказалась неудачной. 
    if (remove(Name)!=0)
    {cout << "\nError!\n Couldn't remove file."<< endl;
            RussianMessage(Name);
            printf("%s>",Name);}

    else 
    {cout << "Ok..." <<endl;
    RussianMessage(Name);
    printf("%s>",Name);}
}

void RemoveDir(_finddata_t *f)
{
if(_rmdir(f->name)!=0)    {cout << "\nError!\n Couldn't remove directory."<< endl;
                        RussianMessage(f->name);    
                        printf("%s>",f->name);}
    else 
    {cout << "Ok..." <<endl;
    RussianMessage(f->name);
    printf("%s>",f->name);}
}

void main(int argc, char * argv[])

{


   // Запросим ПУТЬ (например, папка Temp на диске C, запишется 
   // таким вот образом: c:\temp\)
   char path[70];
strcpy(path, argv[1]);
    
   // Запросим маску файлов (что такое маска?
   // маска задается с использованием символов * и ?
   // где звездочка-заменяет любую последовательность символов,
   // а ?  - любой символ (но только один)
   // К примеру, *.txt - найти любой файл с расширением txt
   char mask[15]="*.*";

   // Соединив две строки, мы получим результат
   // т.е. что хочет найти пользователь и где
   strcat(path, mask);
    
   // Объявление указателя fileinfo на структуру _finddata_t
   // и создание динамического объекта структуры _finddata_t
   // Данная структура помогает задать критерии поиска
   _finddata_t *fileinfo=new _finddata_t;    

   // Функция _findfirst() принимает два параметра: где и что искать, 
   // Второй параметр, указатель на структуру _finddata_t
   // Если функция не сможет успешно отработать - то она вернет -1,
   // в противном случае, переменная done будет содержать уникальный 
   // номер полученной группы файлов, удовлетворяющих заданному условию 
   // поиска. То есть файлы, которые удовлетворяют критерию поиска 
   // представляют собою как бы группу, к которой в дальнейшем мы сможем 
   // обратиться, через функцию _findnext
   long done = _findfirst(path,fileinfo);
    
   int MayWeWork = done;    // если done будет равняться -1, то поиск 
   // вести бесмысленно (почему? смотри комментарии выше)

   // Счетчик, содержит информацию о количестве найденых файлов.    
   int count = 0;   
   while (MayWeWork!=-1)
   {    
      count++;
      // Распечатали имя найденного файла
    
      if(strcmp(fileinfo->name,".")&&strcmp(fileinfo->name,"..")){
            // Проверяем Директория или Нет
            fileinfo->attrib&_A_SUBDIR?RemoveDir(fileinfo):RemoveFile(fileinfo);}


      // Пытаемся найти следующий файл из группы
      MayWeWork = _findnext(done, fileinfo);        
   }
   // Расскажем о том, что мы нашли...
   cout << "\nInformation: was found " << count
        << " file(s) in folder..." << path << endl;

   _findclose(done);
   delete fileinfo;


}
smile

PM MAIL   Вверх
Pakshin A. S.
Дата 28.8.2005, 15:07 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Модератор: Кнопку Report не для общения придумали!!!! О чем там и говорится:

"Эта форма должна быть использована ТОЛЬКО для доклада о НАРУШЕНИИ ПРАВИЛ ФОРУМА в сообщении и ни в коем случае не как средство общения и связи."

Но на первой прощаю и переношу в форум по C\C++

PM   Вверх
asdf
Дата 28.8.2005, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 27.8.2004
Где: Кишинёвъ

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



вставь это на 59-у строку
Код

chdir(path);


Это сообщение отредактировал(а) shurick - 28.8.2005, 17:59
--------------------
... 
PM MAIL   Вверх
karas
Дата 29.8.2005, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 25.8.2005
Где: Запорожье

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



shurick ого! ну ты шаман, здорово ты это!Спасибо ОГРОМНОЕ, выручил! smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

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

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

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

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


 




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


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

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