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

Поиск с консоли - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Насчёт функции memcpy() http://www.cyberforum.ru/cpp-beginners/thread53416.html
Начинаяю использовать эту функцию.Её синтаксис: void memcpy(void *to, const void *from, size_t count); Вопрос_1: Что такое size_t ? И вообще,зачем указателям тип воид? Они что,что-то вовращают?)) В учебнике пока такого не встречал,а функция нужна( ЗЫ: Нужно скопировать один числовой непустой массив в другой числовой массив...как это сделать не догоню уже полчаса.......
C++ Ввести три числа и проверить, возможно ли из них составить арифметическую прогрессию ввести три числа и проверить возможно ли с них составить арифметическую прогрессию http://www.cyberforum.ru/cpp-beginners/thread53408.html
передача параметров по ссылке C++
У кого есть рабочий вариант сего чуда ? (К примеру,функции квадратного корня).В учебнике не работает.
Присвоение типов в С++ C++
Как присвоить елементам массива mas_a елементы строки String.Массив имеет тип int,а String char?
C++ Вопрос по выносу кода в отдельный файл http://www.cyberforum.ru/cpp-beginners/thread53363.html
Вот если писать в С программу, очень много когда можно запутаться ... Можно ли как то вынести часть кода в файл. (именно файл, база не нужна) Например если есть большой массив, можно ли его вынести в файл и от туда считывать? если можно покажите пожалуйста как.
C++ Х в квадрате каким образом мжно делать что бы Х выводился на экарн со степенем? подробнее

Показать сообщение отдельно
kravam
быдлокодер
 Аватар для kravam
1513 / 873 / 44
Регистрация: 04.06.2008
Сообщений: 5,266
09.11.2009, 02:38     Поиск с консоли
МедведЪ, ты просил. Упрощённый вариант проги -=ЮрА=-


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
#include <windows.h>
#include <stdio.h>
 
void GetFileList(LPTSTR sPath, LPTSTR sExt);
 
int main(){
        char sPath[MAX_PATH];
        char sExt[MAX_PATH];
 
                printf("Enter directory  :\t");scanf("%s", sPath);
                printf("Enter extension (*.ext) -> ext :\t");scanf("%s",sExt);
                GetFileList(sPath, sExt);
 system ("PAUSE");
}
 
void GetFileList(LPTSTR sPath, LPTSTR sExt) {
 
 WIN32_FIND_DATA pFILEDATA;
 
 //!!!!!!!!!!!!!!!!!!!!!!!!!!!!Закомментил это!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
 //GetShortPathName(sPath,sPath,MAX_PATH);
 CharToOem(sPath,sPath);
 printf("\r\n\tStart serching in \r\n[%s]\r\n",sPath);
 OemToChar(sPath,sPath);
 HANDLE hFile = FindFirstFile(strcat(sPath,"\\*.*"),&pFILEDATA);
 if (hFile!=INVALID_HANDLE_VALUE)    {
  char * chBuf;
  sPath[strlen(sPath) - strlen(strstr(sPath,"*.*"))] = '\0';
  do {
   //Пропускаем . и ..
   if (strlen(pFILEDATA.cFileName) == 1 &&  strchr(pFILEDATA.cFileName,'.') !=NULL)
    if (FindNextFile(hFile,&pFILEDATA) == 0)
      break;
   if (strlen(pFILEDATA.cFileName) == 2 && strstr(pFILEDATA.cFileName,"..") !=NULL)
    if(FindNextFile(hFile,&pFILEDATA) == 0)
      break;
     //Если нашли директорию, запускаем поиск в ней рекурсивный поиск
   if(pFILEDATA.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
     GetFileList(strcat(sPath,pFILEDATA.cFileName), sExt);
//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!оБЯЗАТЕЛЬН востанавливать дллину пути................................     
     sPath[strlen(sPath) - strlen(pFILEDATA.cFileName)- 1] = '\0';
   }
   else {
    //Проверяем на соотвествие sExt расширения pFILEDATA.cFileName
    if((chBuf = strrchr(pFILEDATA.cFileName,'.'))) {
     if(strstr(chBuf + 1,sExt)) {
      //Если не будем использовать CharToOem() то на экране русский шрифт каракулями выйдет
      CharToOem(pFILEDATA.cFileName,pFILEDATA.cFileName);
      printf("\t\t-> %s\r\n",pFILEDATA.cFileName);
     }
    }
   }
  }
  while (FindNextFile(hFile,&pFILEDATA)!=0);
 }
 printf("\r\n\tSearching complete\r\n",sPath);
}
-=ЮрА=-, там в проге была одна принципильная, на мой взгляд ошибка. По возвращению из функции ты забыл восстанавливать длину пути. Поэтому каждый раз путь увеличивался и увеличивался, прибавляя пройденный папки и не "скидывая"

Потом, я закомментил возврат короткого пути.
В тексте я всё это пометил.

Вроде остальное правильно.
Тебе вопрос: скажи пожалуйста за константу FILE_ATTRIBUTE_DIRECTORY
Какова её роль? Не могу понять.
Спасибо.

Добавлено через 1 минуту
Да ещё. Кто будет использвать- о заголовочнх файлах и перетипизации данных заботьтесь сами, я такие мелочи даже не упоминал.

Добавлено через 8 минут
И второй вопрос
Юра, ты располагаешь сведениями, в каком порядке ищутся файлы?
 
Текущее время: 09:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru