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

Странное поведение функций _findfirst() и _findnext() - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Символьные строки (верно ли, что существуют такие натуральные i и j, что 1 < i < j < n и что si совпадает с s(i+1), а sj совпадает с s(j+1)) http://www.cyberforum.ru/cpp-beginners/thread786284.html
Даны символы s1, s2, … Известно, что символ s1 отличен от восклицательного знака и что среди s2, s3,. .. есть по крайней мере один восклицательный знак. Пусть s1, …, sn – символы данной...
C++ Game developing на C++ Всем привет! Слушайте народ подходит ли C++ для программирования под игры?(например движки там графические,физические писать тудым сюдым:)) И еше куда пойти учиться в России на программиста чтобы... http://www.cyberforum.ru/cpp-beginners/thread786274.html
смена логина C++
Написать программу. Имеется три пользователя( три разных логина и пароля), ввести логин и пароль, если он правильный вывести на экран фразу "Вход в систему", если не правильный - даем подсказку и...
C++ Деление вещественных чисел
Есть float a,b,rez; Делю 4 на 2 = 2 все нормально. 2 на 4 ответ 0 Как правильно делить вещественные числа в с++?
C++ Нужно переделать эту программу, под другую ситуацию http://www.cyberforum.ru/cpp-beginners/thread786253.html
#include <stdio.h> #include <conio.h> #include <string.h> #include <vcl.h> #define LEN 80 #define NUM_W 40 void main() { int i, j, k = 0; char str, *words,
C++ Удалить из строки все слова, начинающиеся на гласную букву Задание:Удалить из строки все слова, начинающиеся на гласную букву Помогите пожалуйста! (С++) подробнее

Показать сообщение отдельно
Alexxx7
98 / 34 / 5
Регистрация: 24.04.2012
Сообщений: 151

Странное поведение функций _findfirst() и _findnext() - C++

14.02.2013, 15:29. Просмотров 919. Ответов 7
Метки (Все метки)

в материалах по С++ дан пример работы с файлами, переименование, удаление и просмотр содержимого директории.
Просмотр осуществляется с помощью структуры fileinfo и функций _findfirst() и _findnext(). Вопрос следующий, в каждой папке у меня оказывается по 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
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
#include <stdio.h>
#include <io.h>       
#include <string.h>
#include <iostream>
using namespace std;
#include <windows.h>
void RenameFile();
void RemoveFile();   
void Dir();    
void main()
{
    // предлагаем выбрать пункт меню для выполнения
    cout << "Please, select preffer number...\n";
    //выбор пользователя
    char ch; 
    do{
        // Переименовать
        cout << "\n1 - Rename\n";
        // Удалить   
        cout << "2 - Remove\n";   
        // Просмотреть некоторую папку(каталог)
        cout << "3 - View some folder\n";   
        // Выход
        cout << "0 - Exit\n\n";    
        cin >> ch;
 
        // анализируем и вызываем 
        // соответствующую  функцию
        switch(ch)
        {
            case '1':
                RenameFile();   
            break;
            case '2':
                RemoveFile();   
            break;
            case '3':
                Dir();
            break;
        }           
    } while(ch != '0');      // Выход из программы
}
// Переименовать существующий файл
void RenameFile()       
{
    char oldName[50], newName[50];
    // В одной переменной запомним существующее имя (oldName), 
    cout << "Enter old name:";
    cin >> oldName;
    // А в другой новое имя(newName)
    cout << "Enter new name:";
    cin >> newName;
    // Произведем переименование и проверку результата
    if (rename(oldName, newName) != 0)
        cout << "Error!\n Couldn't rename file. Check old and new filename...\n\n";
    else 
        cout << "Ok...\n\n";
}
// Удалить существующий файл
void RemoveFile()           
{
    char Name[50];
    // Получаем имя и путь к удаляемому файлу
    cout << "Enter name:";
    cin >> Name;
 
    //Удаляем файл и проверяем результат    
    if (remove(Name) != 0)
        cout << "Error!\n Couldn't remove file. Check filename...\n";
    else 
        cout << "Ok...\n" ;
}
// Поиск файлов в каталоге
void Dir()                        
{
    // Запросим ПУТЬ (например, папка Temp на диске C, запишется 
    // таким вот образом: c:\temp\)
    char path[70];
    cout << "\nEnter full path (for example, C:\\):";
    cin >> path;
    // Запросим маску файлов 
    char mask[15];
    cout << "\nEnter mask (for example, *.* or *.txt):";
    cin >> mask;
    // Соединив две строки, мы получим результат
    // т.е. что хочет найти пользователь и где
    strcat(path, mask);
    // Объявление указателя fileinfo на структуру _finddata_t
    // и создание динамического объекта структуры _finddata_t
    _finddata_t *fileinfo=new _finddata_t;  
    // Начинаем поиск
    long done = _findfirst(path,fileinfo);
    // если done будет равняться -1, 
    // то поиск вести бесмысленно
    int MayWeWork = done;   
    // Счетчик, содержит информацию о количестве найденых файлов.   
    int count = 0;   
    while (MayWeWork!=-1)
    {   
        count++;
        // перекодировали имя найденного файла
        // на случай, если оно кириллическое
        AnsiToOem(fileinfo->name,fileinfo->name);
        // Распечатали имя найденного файла
        cout << fileinfo->name << "\n\n"; 
        // Пытаемся найти следующий файл из группы
        MayWeWork = _findnext(done, fileinfo);        
    }
    // Вывод сообщения о количестве найденных файлов.
    cout << "\nInformation: was found " << count;
    cout << " file(s) in folder..." << path << "\n\n";
    // Очистка памяти
    _findclose(done);
    delete fileinfo;
}
0
Миниатюры
Странное поведение функций _findfirst() и _findnext()  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru