Форум программистов, компьютерный форум, киберфорум
Visual C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/67: Рейтинг темы: голосов - 67, средняя оценка - 4.75
1 / 1 / 0
Регистрация: 10.10.2009
Сообщений: 13

Поиска файлов по маске

10.10.2009, 00:22. Показов 12902. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Народ есть вопрос...вот есть программа....работающая... Она производит поиск cpp файлов в текущей директории... А мне надо сделать..чтобы она
1. выводила названия всех файлов, удовлетворяющих маске, указанной в командной строке
2. вывод имен всех файлов, имеющих произвольное расширение и находящихся на диске С.

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
// LR2.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include "cstringt.h"
#include "conio.h"
#include "io.h"
#include "time.h"
#include "stdlib.h"
#include "iostream"
#include "locale.h"
 
using namespace std;
 
 
 
 
#define LIM_STR 255
int _tmain(int argc, _TCHAR* argv[])
{   
    FILE *pFile;
    setlocale(LC_CTYPE, "Russian_Russia.1251");
    char szBuffer[LIM_STR];
    struct _finddata_t findData;
    intptr_t hFile;
 
    
    
    
    //поиск файла с раширением спп в текущей директории
 
    if((hFile = _findfirst("*.cpp",  &findData ))
 
        ==-1L)
 
        cout << "Файлы *.cpp в текущей директории"
                 " отсутсвуют!" << endl;
 
    else
    {
        cout << "Файлы *.cpp" << endl << endl;
        printf("     Имя файла %14c  Время создания"
                "%llc        Размер %6cАтрибуты\n",
                ' ', ' ', ' ' );
        printf ("------------------------");
        printf ("%3c------------------------", ' ');
        printf ("%3c---------", ' ');
        printf ("%3c-------------\n", ' ');
        do
        {
            //Преобразование времени в формате UTC в текущей строке
        ctime_s ( szBuffer, _countof (szBuffer),
            &findData.time_write);
        printf ( "  %-24s %.24s  %9ld    ",
            findData.name, szBuffer, findData.size);
 
        cout << (findData.attrib & _A_RDONLY ) ? "r" : "-";
        cout << (findData.attrib & _A_HIDDEN ) ? "h" : "-";
        cout << (findData.attrib & _A_SYSTEM ) ? "s" : "-";
        cout << (findData.attrib & _A_ARCH )   ? "a" : "-";
        cout << (findData.attrib & _A_NORMAL )   ? "n" : "-";
        cout << (findData.attrib & _A_SUBDIR )   ? "p" : "-";
        cout << endl;
        } while ( _findnext ( hFile, &findData ) == 0);
        _findclose (hFile);
    }
 
 
    
    
    
    
    _getch();
    
    return 0;
}

Подскажите как доделать...а то сижу уже пол дня....начинающий.....Заранее огромное спасибо.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
10.10.2009, 00:22
Ответы с готовыми решениями:

Нужно написать скрипт поиска файлов по маске на всех дисках
Нужен поиск файлов (*.exe, *.dll, *.cfg, *.ini, *.rw, *.aw) по всем дискам и вывод их ПОЛНЫХ путей к файлам в файл output.txt Найти папку...

Копирование файлов в папки по маске файла и маске папки
Добрый день! Товарищи, помогите. Возникла надобность раскладывать файлы по маске папки и маске файла. То есть, расскажу детальней, есть...

Алгоритм поиска слов по маске
Здравствуйте. Передо мной стоит задача - написать функцию, которая по заданной маске и слову возвращает true/false, если слово по...

12
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
10.10.2009, 16:40
вывод имен всех файлов, имеющих произвольное расширение и находящихся на диске С.
Что значит - на диске C: ? В любом каталоге или только в текущем ?
Если в любом, то эта программа не годится

Добавлено через 52 секунды
выводила названия всех файлов, удовлетворяющих маске, указанной в командной строке
Нужно "*.cpp" заменить на argv[1].
0
1 / 1 / 0
Регистрация: 10.10.2009
Сообщений: 13
10.10.2009, 22:32  [ТС]
Цитата Сообщение от odip Посмотреть сообщение
Что значит - на диске C: ? В любом каталоге или только в текущем ?
Если в любом, то эта программа не годится

Добавлено через 52 секунды

Нужно "*.cpp" заменить на argv[1].


На диске С значит то, что она должна искать файлы по все каталогам т.е. в любом.

"Эта программа не годиться" - я написал что это программа делает. она выводит файлы с расширение cpp в текущей дирректории.

"Нужно "*.cpp" заменить на argv[1]" - это тут ни к чему. попробуй сделать. в итоге получишь ответ
"таких файлов нет"


Мой код выводит только файлы в текущей дирректории...а как мне доделать...чтобы он делал поиск в любом каталоге диска С?
0
Эксперт С++
 Аватар для odip
7176 / 3234 / 82
Регистрация: 17.06.2009
Сообщений: 14,164
10.10.2009, 23:05
Ты определись - тебе нужно искать в любом конкретном каталоге или тебе нужно искать во всех каталогах диска C: ?
Если во всех, то нужно много дописывать - делать рекурсивый или не рекурсивный перебор каталогов начиная с корня диска.
Поищи в форуме - наверняка такое было !

Добавлено через 8 минут
http://www.cyberguru.ru/cpp-so... zmera.html
Не совсем то, но можно переделать
1
Эксперт по математике/физике
 Аватар для Том Ардер
4218 / 3418 / 396
Регистрация: 15.06.2009
Сообщений: 5,818
10.10.2009, 23:49
CFileInfoArray: A class for gathering file information recursively through directorieshttp://www.codeproject.com/KB/files/fileinfo.aspx
0
1 / 1 / 0
Регистрация: 10.10.2009
Сообщений: 13
12.10.2009, 00:03  [ТС]
Мне нужно искать во всех каталогах диска C:
0
556 / 510 / 25
Регистрация: 23.07.2009
Сообщений: 2,359
Записей в блоге: 1
12.10.2009, 00:19
dir c:\ /S не подойдет?
0
14 / 14 / 4
Регистрация: 08.10.2009
Сообщений: 114
12.10.2009, 01:06
1. выводила названия всех файлов, удовлетворяющих маске, указанной в командной строке
Делай операцию ХОR над двумя строками (маской и именем файла) побайтно если все результаті нули - тогда файл подходит.
0
1 / 1 / 0
Регистрация: 10.10.2009
Сообщений: 13
10.11.2009, 15:14  [ТС]
Ну собсвенно что у меня получилось. Все работает ищет... У меня появился еще один вопрос. Помогите с сортировкой файлов. Т.е. мне надо чтобы он выводил список файлов в алфавитном порядке. Помогите пожалуйста.




Может кому понадобиться. Вот код:

Code
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
#include "stdafx.h"
#include "CONIO.H"
#include "stdlib.h"
#include "io.h"
#include "time.h"
#include "cstringt.h"
#include "iostream"
#include "locale.h"
 
 
typedef struct _DItem
{
    struct _finddata_t findData;
    int Id;
    struct _DItem *prev, *next;
}DItem;
 
// Создает новый элемент списка
DItem* CreateItem();
// Добавляет новый элемент списка в его конец
void Add(DItem *end, DItem *NewElem);
// Удаляет элемент списка
void Delete(DItem *end, DItem *NewElem);
 
 
#define LIM_STR 255
 
void FindFile (char *Patch, char *Name);
 
using namespace std;
 
DItem *g_Head = NULL;
DItem *g_Curr;
DItem *g_Old;
 
int _tmain(int argc, _TCHAR* argv[])
 
{
    char Path[MAX_PATH]="C:\\";
    char Name[MAX_PATH]="*.bmp";
 
    // Создание первого элемента
    g_Head    = CreateItem();
    g_Head->Id = 0;
 
    FindFile(Path, Name);
    _getch();
    return 0;
    
}
 
void FindFile (char *Path, char *Name)
{
 
    setlocale ( LC_CTYPE, "Russian_Russia.1251" );
    
    char szBuffer[LIM_STR];
    char FullName[MAX_PATH];
    char NewName[MAX_PATH];
    
    struct _finddata_t findData;
    intptr_t hFile;
 
    strcpy_s(FullName, MAX_PATH-1, Path);
    strcat_s(FullName, MAX_PATH-1, "*.*");
    //Поиск файлов всех расширений в текущей директории
    //
    if( ( hFile = _findfirst ( FullName, &findData ) ) == -1L )
        int a = 0;
    else
    {
        do
        {           
            if(findData.attrib == _A_SUBDIR)
            {
                if(findData.name[0] != '.')
                {
                    strcpy_s(NewName, MAX_PATH-1, Path);
                    strcat_s(NewName, MAX_PATH-1, findData.name);
                    strcat_s(NewName, MAX_PATH-1, "\\");
                    FindFile(NewName, Name);
                    int yyy = 0;
                }
                int uu =0;
            }
            char *Ext1;
            char *Ext2;
            int i;
            for(i=strlen(findData.name); i>=0; i--)
                if(findData.name[i] == '.')
                {
                    Ext1 = &findData.name[i+1];
                    break;
                }
            
            for(i=strlen(Name); i>=0; i--)
                if(Name[i] == '.')
                {
                    Ext2 = &Name[i+1];
                    break;
                }
            if( Ext2[0]=='*' || !strcmpi(Ext1, Ext2))
            {
                printf( "%-24s\n", findData.name);
                // Создание нового элемента
                DItem *Elem = CreateItem();
                // Ввод информации в новый элемент
                Elem->findData = findData;
                // 
                Add(g_Head->prev, Elem);
            }
 
 
        }while( _findnext( hFile, &findData ) == 0 );
        
        _findclose( hFile );
 
    }                 
}
1
 Аватар для nazavrik
23 / 23 / 5
Регистрация: 17.09.2008
Сообщений: 130
10.11.2009, 17:19
Вот моя реализация:

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
#include <windows.h>
#include <string.h>
#include <stdio.h>
#include <conio.h>
 
bool SearchFiles(TCHAR *buffer)
{
    HANDLE hFile;
    WIN32_FIND_DATA findFileData;
    TCHAR temp[MAX_PATH];
    
    SetCurrentDirectory(buffer);
    
    if((hFile=FindFirstFile(TEXT("*.*"), &findFileData))==INVALID_HANDLE_VALUE)
    {
        printf("Invalid file handle (%d)\n", GetLastError());
        return -2;
    }
    else 
    {   
        do
        {
            if(!strcmp(findFileData.cFileName, TEXT("."))||!strcmp(findFileData.cFileName, TEXT(".."))) 
            {
                continue;
            }
            
            if(findFileData.dwFileAttributes == FILE_ATTRIBUTE_DIRECTORY)
            {               
                strcpy(temp, buffer);
                strcat(buffer, "\\");
                strcat(buffer, findFileData.cFileName);
                
                SearchFiles(buffer);
                strcpy(buffer,temp);
                continue;
            }
            printf("File name is %s\n", findFileData.cFileName);
        }
        while(FindNextFile(hFile, &findFileData)!=0);
    }
    FindClose(hFile);
    return true;
}
 
int main(int argc, TCHAR* argv[])
{
    
    TCHAR buffer[MAX_PATH];
    TCHAR initStr[] = TEXT("");
    STARTUPINFO si;
    PROCESS_INFORMATION pi;
    DWORD dwError;
 
    ZeroMemory(&si, sizeof(STARTUPINFO));
    si.cb = sizeof(STARTUPINFO);
    ZeroMemory(&pi, sizeof(PROCESS_INFORMATION));
 
    GetCurrentDirectory(sizeof(buffer), buffer);
    printf("Directory is %s\n", buffer);
 
    if(CreateProcess(NULL, initStr, NULL, NULL, FALSE, NULL, NULL, NULL, &si, &pi))
    {
        printf("Create Process failed (%d)\n", GetLastError());
        return -1;
    }
    WaitForSingleObject(pi.hProcess, INFINITE);
    CloseHandle(pi.hProcess);
    CloseHandle(pi.hThread);
 
    if(!SearchFiles(buffer));
    {
        getch();
        return 0;
    }
 
    dwError = GetLastError();   
 
    if(dwError!=ERROR_NO_MORE_FILES)
    {
        printf("Error!%d", GetLastError());
        return -3;
    }
 
    getch();
 
    return 0;
}
Выводятся названия всех файлов из текущего каталога и всех подкаталогов. Соответственно если в 14-й строке задать нужную маску, то будет выводить определенные файлы.
0
1 / 1 / 0
Регистрация: 10.10.2009
Сообщений: 13
10.11.2009, 19:32  [ТС]
Или я не догнал... Где тут сортировка списка который на выводе.

Добавлено через 11 минут
Вот у меня есть код для сортировки написаный на билдере....Помогите его преобразовать под Visual Studio 2008.


Вот код:
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
/////////////////////////////////////////////////////////////////////////////
//Функция SortSize - функция сортировки по размеру
 
int  SortSize( const void *a, const void *b)
{
    ffblk *fa;
    ffblk *fb;
    fa = (ffblk*) a;
    fb = (ffblk*) b;
 
    if(fa->ff_fsize > fb->ff_fsize) return 1;
    if(fa->ff_fsize < fb->ff_fsize) return -1;
    return 0;
}
/////////////////////////////////////////////////////////////////////////////
//Функция SortName - функция сортировки по имени
int  SortName( const void *a, const void *b)
{
    ffblk *fa;
    ffblk *fb;
    fa = (ffblk*) a;
    fb = (ffblk*) b;
 
    return( strcmp(fa->ff_name,fb->ff_name) );
 
 
 
 
 
 
 
 
 
 
 
 
}// переработка списка в массив
    TransportListToArray(Head);
      AnsiToOem("\nСортировка по имени\n\n", Buf);
    printf(Buf);
    qsort((void *)f1, SumFile, sizeof(f1[0]), SortName);
    int i;
    //void PrintData(ffblk f);                              //функция вывода на экран результатов поиска - со списками не нужна
     for(i = 0; i < SumFile; i++)
    {
        PrintData(f1[i]);
    }
 
       qsort((void *)f1, SumFile, sizeof(f1[0]), SortSize);
 
     AnsiToOem("\nСортировка по размеру\n\n", Buf);
    printf(Buf);                              //функция вывода на экран результатов поиска - со списками не нужна
     for(int j = 0; j < SumFile; j++)
    {
        PrintData(f1[j]);
    }
0
1 / 1 / 0
Регистрация: 10.10.2009
Сообщений: 13
19.11.2009, 16:19  [ТС]
Вообщем смысл такой. Забацал я программу...все работает. Теперь надо сделать сортировку выводящихся файлов....Т.е. сначала он должен выводить несортированный список файлов. А потом с помощь простого меню, надо выбрать тип сортировки....и ниже он должен произвести ее. Прототипы функций сортировки я написал...Но что-то с меню захлох, вродебы простая вещь...но что-то как-то... и немогу разобраться с выводом...надо сделать протип но не знаю что там писать

Прошу помощи....может кто увидит мою ошибку и исправит. Вот код:

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
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
// LR2.cpp : Defines the entry point for the console application.
//
 
#include "stdafx.h"
#include "CONIO.H"
#include "stdlib.h"
#include "io.h"
#include "time.h"
#include "cstringt.h"
#include "iostream"
#include "locale.h"
 
 
typedef struct _DItem
{
    struct _finddata_t findData;
    int Id;
    struct _DItem *prev, *next;
}DItem;
////////////////////////////////////////////////////////////////////////////////////////////////
///Прототиты функций
// Создает новый элемент списка
DItem* CreateItem();
// Добавляет новый элемент списка в его конец
void Add(DItem *end, DItem *NewElem);
// Удаляет элемент списка
void Delete(DItem *end, DItem *NewElem);
// Поиск файлов
void FindFile (char *Patch, char *Name);
// Выводит найденую информацию на экран монитора и в файл
void PrntData(char *NameFile, struct _finddata_t *findData);
// Вывод на экра меню
int Menu(void);
 
///Прототиты функций сравнения
int SortName (const void *a, const void *b);
int SortSize( const void *a, const void *b);
 
 
#define LIM_STR 255
using namespace std;
 
//Глобальные переменные
DItem *g_Head = NULL; //первый элемент списка
int g_SumFile = 0;    //количество найденных файлов
 
int _tmain(int argc, _TCHAR* argv[])
{
    char File [] = "File.txt";
    char FileSortName [] = "FileSortName.txt";
    char FileSortSize [] = "FileSortSize.txt";
    DItem *Curr;
    DItem *Old;
    char Path[MAX_PATH]="C:\\";
    char Name[MAX_PATH]="*.bmp";
    struct _finddata_t *findData;
    setlocale(LC_CTYPE, "Russian_Russia.1251");
   
    //Код ввода данных расположить
    // Создание первого элемента
    g_SumFile = 0;
    g_Head    = CreateItem();
    g_Head->Id = 0;
    FindFile(Path, Name);
    findData = new _finddata_t[g_SumFile];
 
    Curr = g_Head->next;
    int i = 0;
    if(Curr)
    for(i=0; i< g_SumFile; i++)
    {
        findData[i] = Curr->findData;
        Curr = Curr->next;
    }
 
    Curr = g_Head;
    if(Curr)
    {
        while(Curr->next != Curr)
        {
            Old = Curr->next;
            Delete(Curr, Old);
            delete Old;
        }
        delete Curr;
        g_Head = NULL;
    }
    
    //Выводим найденую информацию на экран и в файл
    _getch();
    //return 0;
int Menu(void);
    
 
    
    _getch();
    delete[] findData;
    return 0;
    
}
//////////////////////////////////////////////////////////////////////////////////////////
//Поиск
//
void FindFile (char *Path, char *Name)
{
 
    setlocale ( LC_CTYPE, "Russian_Russia.1251" );
    
    char szBuffer[LIM_STR];
    char FullName[MAX_PATH];
    char NewName[MAX_PATH];
    
    struct _finddata_t findData;
    intptr_t hFile;
    
    strcpy_s(FullName, MAX_PATH-1, Path);
    strcat_s(FullName, MAX_PATH-1, "*.*");
    //Поиск файлов всех расширений в текущей директории
    //
    if( ( hFile = _findfirst ( FullName, &findData ) ) == -1L )
    
        int a = 0;
    else
    {
        
        do
        {            
            
            if(findData.attrib == _A_SUBDIR)
            
            {
            
                if(findData.name[0] != '.')
                {
                    strcpy_s(NewName, MAX_PATH-1, Path);
                    strcat_s(NewName, MAX_PATH-1, findData.name);
                    strcat_s(NewName, MAX_PATH-1, "\\");
                    FindFile(NewName, Name);
                    int yyy = 0;
                }
                int uu =0;
            }
 
            char *Ext1;
            char *Ext2;
            int i;
            for(i=strlen(findData.name); i>=0; i--)
                if(findData.name[i] == '.')
                {
                    Ext1 = &findData.name[i+1];
                    break;
                }
                
            for(i=strlen(Name); i>=0; i--)
                if(Name[i] == '.')
                {
                    Ext2 = &Name[i+1];
                    break;
                }
            if( Ext2[0]=='*' || !_strcmpi(Ext1, Ext2))
            {
                
                
                    //Преобразование времени в формате UTC в текущей строке
                ctime_s ( szBuffer, _countof (szBuffer),&findData.time_write);
                printf ( "  %-24s %.24s  %9ld    ",    findData.name, szBuffer, findData.size);
                cout << (findData.attrib & _A_RDONLY ) ? "r" : "-";
                cout << (findData.attrib & _A_HIDDEN ) ? "h" : "-";
                cout << (findData.attrib & _A_SYSTEM ) ? "s" : "-";
                cout << (findData.attrib & _A_ARCH )   ? "a" : "-";
                cout << (findData.attrib & _A_NORMAL )   ? "n" : "-";
                cout << (findData.attrib & _A_SUBDIR )   ? "p" : "-";
                cout << endl;
                // Создание нового элемента
                DItem *Elem = CreateItem();
                // Ввод информации в новый элемент
                Elem->findData = findData;
                // 
                Add(g_Head->prev, Elem);
                g_SumFile++;
                
            }
 
 
        }while( _findnext( hFile, &findData ) == 0 );
        
        _findclose( hFile );
    }
}
///////////////////////////////////////////////////
// Создает новый элемент списка и возвращмет указа-
// тель на него.
//
DItem* CreateItem()
{
    DItem* NewElem;
    
    NewElem = new DItem;;
    NewElem->next = NewElem;
    NewElem->prev = NewElem;
    
    return NewElem;
}
 
///////////////////////////////////////////////////
//
void Add(
         DItem *end,    // указатель на первый элемент 
         DItem *NewElem    // указатель на новый элемент
         )
{
    if(!NewElem)
        return;
    if(end)
    {
        NewElem->prev = end;
        NewElem->next = end->next;
        end->next     = NewElem;
        NewElem->next->prev = NewElem;
    }
}
 
///////////////////////////////////////////////////
// Удаляет элемент списка
void Delete(
            DItem *end,        // указатель на удаляемый элемент списка
            DItem *NewElem    // указатель на замещаемый элемент списка
            )
{
    if(!NewElem)
        return;
 
    NewElem->next->prev = NewElem->prev;
    NewElem->prev->next = NewElem->next;
    NewElem->next = NewElem;
    NewElem->prev = NewElem;
}
/////////////////////////////////////////////////////////////////////////////
//Функция SortName - функция сортировки по имени
int  SortName( const void *a, const void *b)
{
    _finddata_t *pa = (_finddata_t*) a;
    _finddata_t *pb = (_finddata_t*) b;
    
    return( _strcmpi(pa->name, pb->name));
}
/////////////////////////////////////////////////////////////////////////////
//Функция SortSize - функция сортировки по размеру
 
int  SortSize( const void *a, const void *b)
{
    _finddata_t *pa = (_finddata_t*) a;
    _finddata_t *pb = (_finddata_t*) b;
 
    return pa->size - pb->size;
}
 
///////////////////////////////////////////////////////// 
// Вывод на экран меню
int Menu(void)
 
{
    int NumbMenu;
    for(;;)
    {
        // Вывод меню на экран
        cout << endl << endl;
        cout << "0 - выход"              << endl;
        cout << "1 - сортировать по имени"      << endl;
        cout << "2 - сортировать по размеру"    << endl;
        cout << "Номер команды меню: ";
        cin  >> NumbMenu;
        if(NumbMenu == 0)
        break;
 
        
    }
    
    return 0;
}
 
///////////////////////////////////////////////////////// 
// Вывод на экран монитора и в файл
void printDta(char *NameFile, struct _finddata_t *findData
{
////////
}
0
0 / 0 / 0
Регистрация: 24.01.2010
Сообщений: 12
23.02.2010, 17:28
попробывал вариант проги от nazavrika....почему то не выводятся полный список файлов...из-за чего это происходит???
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.02.2010, 17:28
Помогаю со студенческими работами здесь

Функция для поиска элемента в массиве по маске
Добрый вечер, уважаемые специалисты. Осваиваю PHP, нужно написать функцию для поиска элемента в массиве по маске. Я написал ф-ю proverka...

Поиск файлов по маске
Пытаюсь сделать поиск файлов в текущей директории, но вылазит 2 ошибки и не могу понять что с ней делать! Вот код:#pragma once ...

Поиск файлов по маске
Нужно найти файлы по маске. Маска и каталог передаётся через параметры. Файлы ищутся также в подкаталогах. import java.io.*; import...

Удаление файлов по маске
Скажите как это.какой код писать

Перемещение файлов по маске
Добрый день Хочу перемещать файлы по маске (.exe, .txt, etc.) в другую папку В textBox1 ввожу новую папку, в textBox2 - расширение...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru