Помогите разобраться!!! Почему не работает код(не удаляются папки и файлы)?
Код | #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;
}
| |