Форум программистов, компьютерный форум 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, хоть стреляйся.. файл в папке программы лежит добавлять флаги и полный путь прописывать пробовал(( чего делать?, подробнее

Показать сообщение отдельно
easybudda
Эксперт С++
9456 / 5469 / 927
Регистрация: 25.07.2009
Сообщений: 10,495
27.07.2011, 13:13     нужна функция которая находит файлы
Цитата Сообщение от Sonador Посмотреть сообщение
программа должна сформировать в отдельной функции 2 массива один с именами файлов, а другой с их датами их создания.
Правильнее было бы сделать структуру
C
1
2
3
4
typedef struct {
    char * name;
    FILETIME created;
} filedate_t;
и массив из таких структур. Ну или список
C
1
2
3
4
5
typedef struct FILEDATE_T {
    char * name;
    FILETIME created;
    struct FILEDATE_T * next;
} filedate_t;
и заполнять их по мере нахождения файлов...
Вот под линух что-то похожее. Основной смысл тот же, только имя и время винапэишными функциями получайте...
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
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <dirent.h>
#include <unistd.h>
#include <time.h>
#include <string.h>
 
#define NAME_LEN 256
#define DATE_LEN 64
 
typedef struct FILE_N_DATE {
    char name[NAME_LEN];
    char date[DATE_LEN];
    struct FILE_N_DATE * next;
} fnd_t;
 
fnd_t * new_file(struct dirent * d){
    fnd_t * f;
    struct stat st;
    
    if ( ! ( f = calloc(1, sizeof(fnd_t)) ) )
        return NULL;
    
    strncpy(f->name, d->d_name, NAME_LEN - 1);
    if ( stat(f->name, &st) ){
        free(f);
        return NULL;
    }
    strncpy(f->date, ctime(&st.st_ctime), DATE_LEN - 1);
    f->next = NULL;
    
    return f;
}
 
void dump(const fnd_t * f){
    if ( f ){
        printf("%-30s %s", f->name, f->date);
        dump(f->next);
    }
}
 
int main(void){
    fnd_t * first, * last, * cur;
    DIR * dir;
    struct dirent * sd;
    
    if ( ! ( dir = opendir(".") ) ){
        fprintf(stderr, "Can't open current directory for read!\n");
        exit(1);
    }
    
    first = last = NULL;
    while ( sd = readdir(dir) ){
        if ( strcmp(sd->d_name, ".") && strcmp(sd->d_name, "..") ){
            if ( ! ( cur = new_file(sd) ) ){
                fprintf(stderr, "Can't get information about file!\n");
                while ( first ){
                    last = first->next;
                    free(first);
                    first = last;
                }
                exit(1);
            }
            if ( ! first )
                first = cur;
            else
                last->next = cur;
            last = cur;
        }
    }
    
    if ( closedir(dir) )
        fprintf(stderr, "WARNING! Directory was not properly closed!\n");
    
    if ( ! first )
        printf("No files found.\n");
    else {
        dump(first);
        
        while ( first ){
            last = first->next;
            free(first);
            first = last;
        }
    }
    
    exit(0);
}
Правда, тут я погорячился немного - время создания, конечно нужно было бы, как число хранить (time_t или FILETIME).
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru