Форум программистов, компьютерный форум CyberForum.ru

Поиск файла. - C++

Восстановить пароль Регистрация
 
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
01.04.2010, 22:59     Поиск файла. #1
Здрасти. Каким алгоритмом можно найти файл? (например я в консоли ввожу имя файла, и если он найден, программа говорит что ок)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.04.2010, 22:59     Поиск файла.
Посмотрите здесь:

C++ програмный поиск файла!
Поиск файла C++
Поиск и открытие файла! C++
Поиск файла Dev c++ C++
C++ Поиск файла по маске
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
John_Pa9JIbHuK
Добрый самаритянин
 Аватар для John_Pa9JIbHuK
1098 / 614 / 33
Регистрация: 31.03.2009
Сообщений: 2,568
01.04.2010, 23:08     Поиск файла. #2
C++
1
2
3
4
5
6
7
8
9
10
11
    bool FileExists (const char *fname)
            {
              _finddata_t data;
              long nFind = _findfirst(fname,&data);
              if (nFind != -1)
              {
                _findclose(nFind);
                return true;
              }
              return false;
            }
#include <io.h>
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
01.04.2010, 23:20  [ТС]     Поиск файла. #3
John_Pa9JIbHuK, а что означают _finddata_t data; nFind; _findfirst(fname,&data); _findclose(nFind);
и какие библиотеки надо подключить?

Добавлено через 1 минуту
ой, #include <io.h> незаметил

Добавлено через 1 минуту
а это поиск только в папке с программой, а можно по всему компьютеру сделать?
insideone
Модератор
Автор FAQ
 Аватар для insideone
3622 / 900 / 47
Регистрация: 10.01.2010
Сообщений: 2,429
02.04.2010, 00:01     Поиск файла. #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
#include <iostream>
#include <string>
#include "windows.h"
using namespace std;
 
 
 
bool Search(char* Path, char* FileName)
{
    WIN32_FIND_DATA FFD; 
    HANDLE hSearch = INVALID_HANDLE_VALUE; 
    
    std::string sPath, sFileName, sFullPath, sExt;
    sPath = Path; sPath += "\\*.*";
    unsigned short int Count = 0, Divider = 0;
 
    if ((hSearch = FindFirstFile(sPath.c_str(), &FFD)) == INVALID_HANDLE_VALUE) 
        return false; // в противном случае выходим
    sPath = Path; sPath += "\\";
    do
    {
        // Если нашли папку - следующий ход
        if ( FFD.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY )
        {
            char* Temp = new char[strlen(Path)+strlen(FFD.cFileName)+1];
            strcpy(Temp, Path);
            strcat(Temp, FFD.cFileName);
            Search(Temp, FileName);
            delete [] Temp;
        }
        if ( strcmp(FFD.cFileName, FileName) == 0 )
        {
            cout << "Match! [" << Path << "]\n";
            // файл найден!
        }
 
    }
    while (FindNextFile(hSearch, &FFD)); // ищем следующий файл
 
    FindClose(hSearch); // заканчиваем поиск
return true;
}
 
int main()
{
    char FindPlace[30] = {0};
    char FindThis[30] = {0};
    cin >> FindPlace;
    cin >> FindThis;
    Search(FindPlace, FindThis);
return 0;
}
Примерно так... однако видимо ещё нужно учесть кое что, потому как дубли выдает почему то Я думаю вы разберетесь
Yandex
Объявления
02.04.2010, 00:01     Поиск файла.
Ответ Создать тему
Опции темы

Текущее время: 23:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru