Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2013, 13:47   #1
Gsmart120
 
Регистрация: 19.12.2011
Сообщений: 4
По умолчанию поиск и удаление файлов

хочу сделать поиск и перемещение файлов в папку для их последующего удаления, решил сначала попробовать взять записанные в файл пути и переместить файлы, находящиеся по нему, но что то не выходит, понимаю что это не лучший способ решения задачи, буду благодарен если кто подскажет другой способ, но все-таки пока хочется попробовать так...
(программа на VS 2012, кодировка мультибайтная)
Код:
#include "stdafx.h"
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <locale.h>
 #include <TCHAR.h>
#include <string.h>
#include <conio.h>
#include <shlobj.h>  
using namespace std;
#define MAX_SIZE 512
 FILE *fp;
#define __DEBUG
void show_files(const char * _path, const char * mask, char Recursive )
{
    WIN32_FIND_DATA data;
    WIN32_FIND_DATA data2;
    HANDLE h;
    char temp[MAX_SIZE], nextpath[MAX_SIZE], path[MAX_SIZE];
    int n, len; char name[MAX_SIZE];
   
   fp=fopen("B://temp.txt","w+");
    lstrcpy(path, _path);
    len = lstrlen(_path);
    if ( _path[ len - 1] != '\\' )
    {
        path[len] = '\\';
        path[len + 1] = '\0';
    }
    lstrcpy(temp, path);
    lstrcat(temp, mask);
    h = FindFirstFile( temp, &data); 
    if ( h != INVALID_HANDLE_VALUE )
    {   do 
        {  fprintf(fp,"%s%s\n", path, data.cFileName);  
        /*CopyFile("&data.cFileName","B:\\1\\",TRUE); */ 
        
             }  
        while ( n = FindNextFile(h, &data ) );
    }
    FindClose(h);
    if ( Recursive )
    {
        lstrcpy(temp, path);
        lstrcat(temp, "*.*");
        h = FindFirstFile( temp, &data);
        if ( h != INVALID_HANDLE_VALUE )
        { do 
            {   if ( 
                    data.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY 
                    && lstrcmp(data.cFileName, ".") != 0 
                    && lstrcmp(data.cFileName, "..") != 0 
                   )
                {
                    lstrcpy(nextpath, path);
                    lstrcat(nextpath, data.cFileName);
                    show_files( nextpath, mask, 1 ); 
                }
            }
            while ( n = FindNextFile(h, &data ) );
        }
    }
    FindClose(h); fclose(fp);
    
}   
    
int main()
{
    char path[MAX_SIZE], mask[MAX_SIZE];   char tmp[MAX_SIZE]; char tmp2[MAX_SIZE]; char c;
    setlocale(LC_CTYPE, "RU");
    printf("Введите начальную директорию\n");
    fgets(path, MAX_SIZE, stdin);
    path[ lstrlen(path) - 1] = 0;
    printf("Введите маску для поиска\n");
    scanf("%s", mask);
    show_files(path, mask, 1);
 
 
if((fp=fopen("B://temp.txt","r+"))!=NULL) //printf("print\n %s",fp);
    {
    while ((c = fgetc(fp)) != '\n')  
       /*   */
/*вот тут файл уже оказывается пуст, хотя там должны быть строки с путями найденных файлов, вследствие чего конец строки не обнаруживается и программа выдает символы бесконечно.. */
    printf(" text %s ",fp); 
    /*  */
}
puts("\nDone.");
    system("pause");
    return 0;
}

Последний раз редактировалось Stilet; 22.12.2013 в 14:47.
Gsmart120 вне форума Ответить с цитированием
Старый 22.12.2013, 14:00   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Ну есть уже среды Delphi, Builder... Ну. и нахрена эта консоль?
Проехали.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 22.12.2013, 14:10   #3
Gsmart120
 
Регистрация: 19.12.2011
Сообщений: 4
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Ну есть уже среды Delphi, Builder... Ну. и нахрена эта консоль?
Проехали.
года 2 уже не пользуюсь builder, VS удобнее и приятнее для пользования.
Gsmart120 вне форума Ответить с цитированием
Старый 22.12.2013, 14:11   #4
Gsmart120
 
Регистрация: 19.12.2011
Сообщений: 4
По умолчанию

тут в принципе среда наверное не так важна, просто хочу понять почему в указанной в коде строке файл очищается...
Код:
while ((c = fgetc(fp)) != '\n')
это ведь лучший способ прочитать конец строки!?
Gsmart120 вне форума Ответить с цитированием
Старый 22.12.2013, 23:12   #5
Gsmart120
 
Регистрация: 19.12.2011
Сообщений: 4
По умолчанию

кхм кхм, что неужели никто не может помочь? или VS тут не в почете?
Gsmart120 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление файлов ыыф Общие вопросы Delphi 1 10.06.2013 00:42
Поиск файлов по маске и нахождения общего размера найденных файлов и вывод в терминал Колямбий Помощь студентам 0 21.04.2013 21:31
Создание/изменение/удаление файлов в потоке. Мониторинг файлов в потоке. The Real Kos Общие вопросы Delphi 5 22.10.2012 23:58
удаление файлов Leo20 Общие вопросы Delphi 5 22.11.2009 08:22
Удаление, файлов Vladya Помощь студентам 4 22.12.2008 22:40