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

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

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.11.2016, 03:58   #1
BPro
Пользователь
 
Регистрация: 03.05.2016
Сообщений: 11
По умолчанию Рекурсивный поиск и вывод в файл

Собственно задача следующая:

Имеется функция рекурсивного поиска файлов по маске. Как мне с помощью неё вывести результат в файл.


Код:
#include<iostream>
#include<windows.h>
#include <conio.h>
using namespace std;




void FindDir(char* path, char* mask)
{
	WIN32_FIND_DATA wfd;
	HANDLE hfound;
	char newpath[MAX_PATH];
	char fpath[MAX_PATH];
	char pathifile[MAX_PATH]; //полный путь до файла
	char delpath[MAX_PATH];
	strcpy(fpath, path);
	strcat(fpath, "\\");
	strcpy(delpath, fpath);
	strcat(fpath, mask);


	if ((hfound = FindFirstFile(fpath, &wfd)) != INVALID_HANDLE_VALUE)
	{
		if (!(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) && strcmp(wfd.cFileName, "..") && strcmp(wfd.cFileName, "."))
		{
			//нашли первый файл в папке path    
			printf(wfd.cFileName);
			printf("\n");
		}
		while (FindNextFile(hfound, &wfd))
		{
			if (!(wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) && strcmp(wfd.cFileName, "..") && strcmp(wfd.cFileName, "."))
			{
				// файл в папке path    
				// delpath - папка, с которой начинается реккурсия
				// wfd.cFileName - имя найденного файла
				// копируем строку delpath в pathifile
				strcpy(pathifile, delpath);
				// прибавляем к строке pathifile значение
				// переменной wfd.cFileName - имя файла
				strcat(pathifile, wfd.cFileName);

				printf(wfd.cFileName);
				printf("\n");

			}
		}
	}

	FindClose(hfound);
	//поиск файлов закончили, теперь ищем подпапки  
	strcpy(fpath, path);
	strcat(fpath, "\\*.*");

	if ((hfound = FindFirstFile(fpath, &wfd)) != INVALID_HANDLE_VALUE)
	{
		if ((wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) && strcmp(wfd.cFileName, "..") && strcmp(wfd.cFileName, "."))
		{
			strcpy(newpath, path);
			strcat(newpath, "\\");
			strcat(newpath, wfd.cFileName);
			FindDir(newpath, mask); //Рекурсивный вызов  
		}

		while (FindNextFile(hfound, &wfd))
		{
			if ((wfd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) && strcmp(wfd.cFileName, "..") && strcmp(wfd.cFileName, "."))
			{
				strcpy(newpath, path);
				strcat(newpath, "\\");
				strcat(newpath, wfd.cFileName);
				FindDir(newpath, mask); //Рекурсивный вызов  
			}
		}
	}
}


int main()
{
	
	
	FindDir("D:\\", "*.txt");
	
	getch();
	return 0;
}
Сам по C# ,в плюсах дуб дубом ,поэтому уж извините за глупые вопросы.
Так же интересно каким образом можно организовать следующее с данными из функции

foreach(файл in файлах) //Результат берем из функции
{
Какое_то_действие(файл);
}
BPro вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Рекурсивный поиск файлов. Pein95 Общие вопросы C/C++ 2 20.10.2013 02:00
Поиск символа в строке и вывод в файл(C++) Monika94 Помощь студентам 1 23.01.2013 03:40
рекурсивный поиск с возвратом mego4el Помощь студентам 0 25.04.2011 22:45
Рекурсивный поиск файлов в системе. grigorill2 C# (си шарп) 1 26.02.2011 15:26
Рекурсивный поиск zumm Общие вопросы Delphi 7 01.11.2010 22:47