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

Размер и поиск файлов _findfirst описание - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Проверить, можно ли из данных букв составить заданное слово S http://www.cyberforum.ru/cpp-beginners/thread763333.html
Люди, помогите решить задачу: Двумерный массив М N содержит некоторые буквы русского алфавита, расположенные в произвольном порядке. Написать программу, проверяющую можно ли из этих букв составить данное слово S.
C++ Преобразовать int в char * Есть какое-то целое число. Допустим 12451243. Его необходимо преобразовать в строку. У меня есть поле TenString (десят. строка), внутри поле Data. Выклыдываю прототип функции toString и ее описание: void toString(int); void TenString::toString(int _number) { int m = _number; int k = 0; while(m!=0) { http://www.cyberforum.ru/cpp-beginners/thread763304.html
C++ Как перегрузить оператор ввода?
Как перегрузить оператор ввода? rational.h #define _Rational_h_ #include <iostream> using namespace std; int nod(int p, int q) { if (p < 0) p = -p;
C++ Циклический сдвиг(маленький косяк)
#include <iostream> using namespace std; #include <math.h> #include <conio.h> #include <windows.h> int main() { SetConsoleCP(1251); SetConsoleOutputCP(1251); const int n=3,m=4;
C++ Определить, имеется ли в строке три цифры подряд http://www.cyberforum.ru/cpp-beginners/thread763272.html
Определить, имеется ли в строке три цифры подряд.
C++ Напечатать все слова отличные от последнего слова, предварительно перенести последнюю букву в начало слова Дано текст, содержащий от 2 до 30 слов, в каждом из которых от 2 до 10 латинских букв, между соседними словами - не менее одного пробела. Напечатать все слова отличные от последнего слова, предварительно превратив каждое из них по следующему правилу: перенести последнюю букву в начало слова. подробнее

Показать сообщение отдельно
Геон
0 / 0 / 0
Регистрация: 07.02.2016
Сообщений: 1
09.07.2016, 22:47     Размер и поиск файлов _findfirst описание
Leningradeс
1.
C++
1
struct _finddata_t file;
Это объявление переменной file, структурного типа _finddata_t. (что такое структура см. Инициализация структуры в си ( c struct ))
Определение _finddata_t находится в подключаемой библиотеке io.h

C
1
2
3
4
5
6
7
8
9
struct _finddata_t
{
    unsigned    attrib;     /* Attributes, see constants above. */
    time_t      time_create;
    time_t      time_access;    /* always midnight local time */
    time_t      time_write;
    _fsize_t    size;
    char        name[FILENAME_MAX]; /* may include spaces. */
};
См. информация по этой структуре: https://msdn.microsoft.com/ru-ru/library/kda16keh.aspx

2.
C++
1
intptr_t hFile;     /* Это объявление знаковой целочисленной переменной hFile */
intptr_t является знаковым целочисленным memsize-типом и способен безопасно хранить в себе указатель в независимости от разрядности платформы.
См. http://rsdn.ru/article/cpp/XXtraps64bit.xml, http://www.viva64.com/ru/t/0023/

3.
C++
1
if ((hFile = _findfirst ( "*.*", &file )) == -1L)
Происходит вызов функции _findfirst, определение которой находится в подключаемой библиотеке io.h. Функция ищет в текущей директории файл, соответствующий маске "*.*" (т.е с любым именем и любым типом). Характеристики первого найденного файла помещаются в структурную переменную file, откуда их потом можно прочитать.
См: https://msdn.microsoft.com/ru-ru/library/kda16keh.aspx
Если функция вернула -1, значит поиск закончился неудачей. Иначе, в hFile помещается дескриптор (это что-то вроде указателя на первый встреченный файл, но подробней не знаю) для последующего использования в функциях _findnext и _findclose

4.
C++
1
while ( _findnext (hFile, &file) == 0 );
Функция findnext() продолжает поиск, начатый функцией findfirst(). Находя при каждом срабатывании очередной файл, по маске, заданной в _findfirst. Пока функция возвращает нулевое значение - цикл продолжается.

P.S.
Спасибо за шаблон кода. Я его взял за основу при выполнении д.з. в рамках учебного курса по языку Си. Вот моя адаптация:
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
#include <stdio.h>
#include <stdlib.h>
#include <io.h>
 
int main(void)
{
    //Вспомогательные структуры и дескрипторы
    struct _finddata_t f;
    long hFile;
    
    //Открываем текущую директорию
    if ((hFile = _findfirst ( "*.*", &f )) == -1L)
    {
       printf("Cannot open dir");
    }
    else
    {
         //В цикле обходим файлы директории
         do
         {
             printf ("%s %ld\n", f.name, f.size);
         }
         while ( _findnext (hFile, &f) == 0 );
         //Закрываем директорию
        _findclose (hFile);
    }
    //Остановка перед закрытием окна
    system("PAUSE");
    return 0;
}
Также я читал: http://www.c-cpp.ru/content/findfirst-findnext - там, по сравнению с сайтом MSDN, объяснение мне показалось понятнее. Но там, будто, для другой редакции Си.

P.P.S. http://www.specialist.ru/course/si
 
Текущее время: 13:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru