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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.05.2018, 17:57   #1
sasha7971182
Новичок
Джуниор
 
Регистрация: 13.05.2018
Сообщений: 4
По умолчанию С++ WinAPI

Короче, задача стоит в том, чтобы программа по заданной маске наъодила файлы. Я накидал код, но не пойму почему он не работает. Помоги исправить
Код:
#include <iostream>
#include <windows.h>
#include <io.h>
#include <dir.h>
#include <locale.h>
#include <string>
#include <conio.h>
#include <stdio.h>
#define MAX_PATH 260

using namespace std;

bool Search_File(string dir, string mask)
{
	HANDLE file;
	WIN32_FIND_DATA ffd = {0};
	TCHAR temp[MAX_PATH];
	TCHAR str[MAX_PATH];
   
	string a = dir;
	string b = mask;
	string c = "";
	c = a + b;
	
	file = FindFirstFile((c).c_str() , &ffd);
	
	
	if (file == INVALID_HANDLE_VALUE) {
		cout <<"Файл не был найден"<<endl;
		return false;
	}
	else{
		do{
			if(!strcmp(ffd.cFileName, TEXT("."))||!strcmp(ffd.cFileName, TEXT(".."))){
				continue;
			}	
            if (ffd.dwFileAttributes & FILE_ATTRIBUTE_SYSTEM)
            {
                continue;
            }
			if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY){//если не установлен бит, тогда файл
				c = a + ffd.cFileName + '\\';
				
				Search_File(c,b);					
			}
			else{
				c = a + ffd.cFileName;
				cout<<"найденный файл:"<<c<<endl;
			
			}
			cout <<"найденый файл:"<<ffd.cFileName<<endl;
		}
		while(FindNextFile(file,&ffd) != 0);	
	}
	FindClose(file);
	
	return true;	
}

int main(int argc, TCHAR* argv[])
{
	setlocale(LC_ALL,"RUS");
		
	char mas[MAX_PATH];
	cin.getline(mas,MAX_PATH,'\n');
		
	for (CHAR drive[4] = "A:\\"; *drive <= 'Z'; *drive += 1) {
    	UINT driveType = GetDriveType(drive);
    	if (driveType != DRIVE_UNKNOWN &&      driveType != DRIVE_NO_ROOT_DIR) {
        	drive[3] = '\\';
        	Search_File(drive, mas);
        	
    	}
	}
	
	getch();
	return 0;
}
sasha7971182 вне форума Ответить с цитированием
Старый 14.05.2018, 18:04   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,695
По умолчанию

http://www.programmersforum.ru/showthread.php?t=319829
p51x вне форума Ответить с цитированием
Старый 14.05.2018, 19:52   #3
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Цитата:
Сообщение от sasha7971182 Посмотреть сообщение
не пойму почему он не работает
A:\ ничего не найдет, надо искать A:\*
waleri вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
WinApi Elnamir Win Api 1 18.04.2013 21:34
Различие кода mfc и WinApi(mfc ручками набили, а WinApi автоматически с генерировался!! нужно явное отличие, не могу найти) Артём1991 Помощь студентам 0 25.03.2012 17:13
WinAPI for me Kazimir Фриланс 4 14.12.2009 14:36