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

нужна функция которая находит файлы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Структуры http://www.cyberforum.ru/cpp-beginners/thread180376.html
Помогите с программой! Задание в этом документе:
C++ Дерево каталогов. Не могу найти ошибку. Вот собственно написал программу, которая должна строить дерево каталогов. Но почему-то не строит, помогите найти ошибку, пожалуйста... #include "stdafx.h" #include <string.h> #include <stdio.h> #include <conio.h> #include <stdlib.h> #include <io.h> #include <direct.h> #include <iostream> http://www.cyberforum.ru/cpp-beginners/thread180346.html
C++ Сервер с использыванием cgi
Решил сделать telnet сервер тут hut.ru, исходящие соединение, кроме скриптов запрещенны, сами приложение на сервере запустить можно, можно ли сделать так: создаем CGI-скрипт на си который типа telnet-клиента, это cgi-скрипт коннектится к хосту 127.0.0.1 23. Так получится?
Вычисление функции y=f(x) C++
Составить программу для вычисления функции y=f(x), графическое представление которой приведено на рисунке. Аргумент функции и ее значение - вещественные. Значение аргумента ввести с клавиатуры. На экран вывести значение аргумента и вычисленное значение функции. Помогите пожалуйста. С++ не изучала, поэтому не знаю как. Заранее спасибо!
C++ полиндром http://www.cyberforum.ru/cpp-beginners/thread180328.html
boolean polindrom(char*s1){ char* str2=new char; int a=0; for(int i=0 ; i<strlen(s1) ;i++) for(int j=0; j<strlen(s1) ; j++){ if(s1=='\0')break; if(s1==' ') {a++;i--;continue;} else{str2=s1;}
C++ dev cpp не хочет открывать файлы(( fstream in("test.in"); cout << in.is_open(); выдает 0, хоть стреляйся.. файл в папке программы лежит добавлять флаги и полный путь прописывать пробовал(( чего делать?, подробнее

Показать сообщение отдельно
Sonador
 Аватар для Sonador
0 / 0 / 0
Регистрация: 24.04.2011
Сообщений: 14
27.07.2011, 00:24     нужна функция которая находит файлы
Здравствуйте! Пытаюсь написать программу по просьбе друга. Часть её удалось сделать благодаря коду написанному easybudda в сообщении #12. Вот код, который у меня получился.

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
#include <windows.h>
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
 
#ifndef MAX_PATH
#define MAX_PATH 1024 // Замена константы максимального полного имени файла с 260 на 1024
#endif
 
#define NAME_MASK "*.*"  // Определение маски для поиска файлов (любое имя, любое расширение)
 
char **FindFileInDirectory(FILETIME **data, size_t *cnt);       // поиск всех файлов в папке
 
int main()
{
    size_t *cnt = new size_t;
    FILETIME **data = NULL;
    char **list = FindFileInDirectory(data, cnt);
/*  if ( ! list )   // Проверка есть ли в списке list файлы
        printf("There aren't files containing \"432\"\n");
    else
    {
        printf("Files contain \"432\":\n");
        for ( size_t i = 0; i < *cnt; ++i )
        {
            printf("%i. %s \n",i+1, list[i]);
        }
    }
*/
    if ( ! data )   // Проверка есть ли в списке data файлы
        printf("There aren't any info\n");
    else
    {
        printf("Data:\n");
        for ( size_t i = 0; i < *cnt; ++i )
        {
            SYSTEMTIME stUTC, stLocal;
            FileTimeToSystemTime(data[i], &stUTC);
            SystemTimeToTzSpecificLocalTime(NULL, &stUTC, &stLocal);
            printf("\tcreate in: %02d/%02d/%d  %02d:%02d\n",
            stLocal.wDay, stLocal.wMonth, stLocal.wYear,
            stLocal.wHour, stLocal.wMinute);
        }
    }
    return 0;
}
 
char **FindFileInDirectory(FILETIME **data, size_t *cnt)
{
    char curDir[MAX_PATH];      // переменная для хранения текущего файловый путь
    char **list = NULL;         // указатель на переменную, хранящую список имен файлов
    size_t cnt_list = 0, cnt_data = 0;  // счетчик количества файлов в папке
    WIN32_FIND_DATAA find;             // структура, описывающая файл, найденный функцией  FindFirstFile и FindNextFile
    HANDLE hFind;               // указатель на открытый файл
 
    SetCurrentDirectoryA("Proba");      // изменение текущей дирректории на вложенную папку 
    GetCurrentDirectoryA(MAX_PATH, curDir); // функция возвращает текущий каталог. Имя каталога нормализовано и содержит '\' на конце.
 
    hFind = FindFirstFileA(NAME_MASK, &find);
 
    if ( hFind == INVALID_HANDLE_VALUE )    // В случае неудачи буфер не заполняется и возвращается недействительный описатель (INVALID_HANDLE_VALUE = -1).
    {
        fprintf(stderr, "Can't find any file!\n");
        exit(1);
    }
 
    do      
    {
        // определение имен файлов
        if ( ( list = (char**)realloc(list, sizeof(char*) * (cnt_list + 1)) ) == NULL ) // Динамический массив
        {
            perror("realloc");  // Сообщение об ошибке отсутствия свободной памяти
            exit(1);
        }
        if ( ( list[cnt_list++] = _strdup(find.cFileName) ) == NULL )   // Присоединяет память при помощи вызова malloc, копирует  в  нее строку  string  и возвращает указатель на присоединенную память
        {
            perror("strdup");   // Сообщение об ошибке отсутствия свободной памяти
            exit(1);
        }
        // определение даты создания
        if ( ( data = (FILETIME**)realloc(data, sizeof(FILETIME*) * (cnt_data + 1)) ) == NULL ) // Динамический массив
        {
            perror("realloc");  // Сообщение об ошибке отсутствия свободной памяти
            exit(1);
        }
        data[cnt_data++] = &find.ftCreationTime;
 
    } while ( FindNextFileA(hFind, &find) );
 
    FindClose(hFind);
 
    *cnt = cnt_list;
    printf("Files in %s:\n", curDir);
    return list;
}
Проблема в том, что при попытке вывода информации в main программа говорит, что data пустая. Видимо я запуталсь в указателях. Возврат list тоже наверное извращенный, но по другому не получилось. Помогите плиз отредактировать, так что б и list, и data были доступны в main... (вывод на экран на данном этапе всего лишь проверка, дальше над ними ещё будет много издевательств)...
 
Текущее время: 11:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru