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

Поиск файлов по заданной строке!!! - C++

Восстановить пароль Регистрация
 
Аллан
0 / 0 / 0
Регистрация: 22.05.2011
Сообщений: 4
04.06.2011, 19:08     Поиск файлов по заданной строке!!! #1
Помогите плиз найти ошибку!!!Вроде поиск сам работает а когда вставляю код по поиску подстроки чёт тупит((Заранее спасибо!!!
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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
#include <iostream>
#include <windows.h>
#include <cstring>
#include <string.h>
#include <fstream>
using namespace std;
void FindFiles(char* dir, char* mask,char substr[255]);
 
int main()
{
 
 char s[50];
 char z[255];
 setlocale(0,"Russian");
 cout<<"Имя папки для поиска\n";
 cin.getline(s,50);
 cout<<"Введите подстроку для поиска\n";
 cin.getline(z,255);
 FindFiles(s,"*.txt",z);
 cin.get();
 cin.get();
 return 0;
}
 
//-----------------------------------------------------------------------------------
void FindFiles(char* dir, char* mask,char substr[255]){
 WIN32_FIND_DATA FindFileData;
 HANDLE hFind;
 
 char basestr[256];
 int count = 0;
 
 char* FullName;
 FullName=new char[MAX_PATH];
   
 char* Flop;
 Flop=new char[MAX_PATH];
 
 char* root;
 root=new char[MAX_PATH];
 
 char* Finall;
 Finall=new char[MAX_PATH];
 
//-----ищем все файлы в каталоге-------------------------------------------------------- 
 
 strcpy(FullName,dir);
 strncat(FullName,"\\",MAX_PATH);
 strncat(FullName,mask,MAX_PATH);
 
 ofstream fout("D:\\10.txt");
 
 hFind = FindFirstFile(FullName, &FindFileData);
 
 if (hFind != INVALID_HANDLE_VALUE){ 
    
  do {
     if (!strncmp(FindFileData.cFileName, ".", 1) || !strncmp(FindFileData.cFileName, "..", 2))
      continue; 
    
    if(!(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)){
      strncpy(Finall,dir,MAX_PATH);
      strncat(Finall,"\\",MAX_PATH);
      strncat(Finall,FindFileData.cFileName,MAX_PATH);
     
     count=0;
     ifstream file(Finall);
     
     if(file.fail())
         cout<<"Error";
     if(fout.fail())
         cout<<"Error";
     while(!file.eof())
     {
      file.getline(basestr,sizeof(basestr));
      
       const char * buf = basestr;
       while (strstr(buf, substr) != NULL) {
        buf = strstr(buf,substr);
        ++count;
        ++buf;
       }
     }
     
     if(count>0)    
     cout<<"Совпадений в: "<<Finall<<" = "<<count<<endl;
     file.close();
     
    }
    
  } while (FindNextFile(hFind,&FindFileData));
 fout.close();
 FindClose(hFind);
 }
 
//-----выполняем рекурсивный вызов-----------------------------------------------
 
 strncpy(Flop,dir,MAX_PATH);
 strncat(Flop,"\\",MAX_PATH);
 strncat(Flop,"*.*",MAX_PATH);
 
 hFind = FindFirstFile(Flop, &FindFileData);
 
 if (hFind != INVALID_HANDLE_VALUE) 
    { 
 
  do {
   
   if (!strncmp(FindFileData.cFileName, ".", 1) || !strncmp(FindFileData.cFileName, "..", 2))
    continue;
   if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
    {
      strcpy(root,dir);
      strncat(root,"\\",MAX_PATH);
      strncat(root,FindFileData.cFileName,MAX_PATH);
      strncat(root,"\\",MAX_PATH);
    
      FindFiles(root,mask,substr);    
     
    }
  } while (FindNextFile(hFind,&FindFileData));
 
 FindClose(hFind);
 }
   
}
//--------------------------------------------------------------------------------
Добавлено через 18 минут
Точнее если указываешь большую директорию для поиска прога отрабатывает не корректно!!!
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.06.2011, 19:08     Поиск файлов по заданной строке!!!
Посмотрите здесь:

Вычислить количество цифр в заданной строке C++
Поиск заданной буквы в строке. Определения количества слов C++
C++ Поиск в заданной строке последнего вхождения заданного символа
составить процедуру в результате которой из первой заданной строки будет удалятся каждый символ принадлежащий и второй заданной строке C++
Открытие файлов из заданной папки C++
C++ В заданной строке определить количество слов (в строке может содержаться несколько пробелов подряд).
В заданной строке определить количество слов C++
Поиск заданной подстроки в строке (алгоритм Кнута-Морриса-Пратта) C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Аллан
0 / 0 / 0
Регистрация: 22.05.2011
Сообщений: 4
11.06.2011, 20:14  [ТС]     Поиск файлов по заданной строке!!! #2
Тема закрыта!!!
Yandex
Объявления
11.06.2011, 20:14     Поиск файлов по заданной строке!!!
Ответ Создать тему
Опции темы

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