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

Спецификация файла. WTF? - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.87
vortexx1
 Аватар для vortexx1
6 / 6 / 2
Регистрация: 06.03.2011
Сообщений: 269
07.01.2012, 20:20     Спецификация файла. WTF? #1
Здравствуйте. Что такое спецификация файла (в контексте данной задачи)?
В Google ничего понятного не нашел.

Заранее спасибо.
Миниатюры
Спецификация файла. WTF?  
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
vortexx1
 Аватар для vortexx1
6 / 6 / 2
Регистрация: 06.03.2011
Сообщений: 269
07.01.2012, 21:11  [ТС]     Спецификация файла. WTF? #2
Пожалуйста, кто-нибудь!
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
07.01.2012, 22:19     Спецификация файла. WTF? #3
имя файла и путь имеется ввиду наверное.

Добавлено через 13 минут
бубубу
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
    std::map<DWORD,std::string> a_ty;
 
    a_ty[FILE_ATTRIBUTE_ARCHIVE] = "FILE_ATTRIBUTE_ARCHIVE";
    a_ty[FILE_ATTRIBUTE_COMPRESSED] = "FILE_ATTRIBUTE_COMPRESSED";
    a_ty[FILE_ATTRIBUTE_DEVICE] = "FILE_ATTRIBUTE_DEVICE";
    a_ty[FILE_ATTRIBUTE_DIRECTORY] = "FILE_ATTRIBUTE_DIRECTORY";
    a_ty[FILE_ATTRIBUTE_ENCRYPTED] = "FILE_ATTRIBUTE_ENCRYPTED";
    a_ty[FILE_ATTRIBUTE_HIDDEN] = "FILE_ATTRIBUTE_HIDDEN";
    a_ty[FILE_ATTRIBUTE_NORMAL] = "FILE_ATTRIBUTE_NORMAL";
    a_ty[FILE_ATTRIBUTE_NOT_CONTENT_INDEXED] = "FILE_ATTRIBUTE_NOT_CONTENT_INDEXED";
    a_ty[FILE_ATTRIBUTE_OFFLINE] = "FILE_ATTRIBUTE_OFFLINE";
    a_ty[FILE_ATTRIBUTE_READONLY] = "FILE_ATTRIBUTE_READONLY";
    a_ty[FILE_ATTRIBUTE_REPARSE_POINT] = "FILE_ATTRIBUTE_REPARSE_POINT";
    a_ty[FILE_ATTRIBUTE_SPARSE_FILE] = "FILE_ATTRIBUTE_SPARSE_FILE";
    a_ty[FILE_ATTRIBUTE_SYSTEM] = "FILE_ATTRIBUTE_SYSTEM";
    a_ty[FILE_ATTRIBUTE_TEMPORARY] = "FILE_ATTRIBUTE_TEMPORARY";
 
    DWORD attr = ::GetFileAttributesA("D:\\Nike");
 
    if (attr==INVALID_FILE_ATTRIBUTES) {
        std::cout << "oops.\n";
        getch();
        return 1;
    }
 
    std::map<DWORD,std::string>::iterator it = a_ty.begin();
 
    for (; it!=a_ty.end(); it++) {
 
        if (attr & it->first)
            std::cout << it->second << '\n';
 
    }


Добавлено через 1 минуту
хм. хотя по идее от тебя и требуется написать свою GetFileAttributesA.
vortexx1
 Аватар для vortexx1
6 / 6 / 2
Регистрация: 06.03.2011
Сообщений: 269
07.01.2012, 23:45  [ТС]     Спецификация файла. WTF? #4
Спасибо. А как посмотреть реализацию этой функции в windows.h?
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
08.01.2012, 00:13     Спецификация файла. WTF? #5
vortexx1, никак

тебе лучше уточнить задание (точно оно в этом?), т.к лично я слабо представляю как можно получить эти все атрибуты иначе чем этой функцией.
vortexx1
 Аватар для vortexx1
6 / 6 / 2
Регистрация: 06.03.2011
Сообщений: 269
10.01.2012, 12:54  [ТС]     Спецификация файла. WTF? #6
Спасибо за помощь, все сделал.
Выкладываю код, может, поможет когда-то кому-то из глубин Google

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
#include <iostream>                             // подключаем ввод/вывод
#include <string>                               // подключаем тип данных string
#include <windows.h>                            // подключаем функции windows
#include <conio.h>                              // подключаем для работы getch()
using namespace std;                            // включаем пространство имен std
 
string fileAttributes( const char * );          // прототип функции, возвращающей атрибут файла
 
// функция main, с которой начинается исполнение программы
int main()
{
    const char path[] = "MyFile.txt";                                // задаем путь к файлу
    cout << "File is '" << path << "'.\n" << endl;                   // выводим путь файла на экран
    
    // тестируем нашу функцию
    SetFileAttributes( path, FILE_ATTRIBUTE_READONLY );              // переводим файл в режим Read-only
    cout << "File is " << fileAttributes( path ) << "." << endl;     // выводим результаты работы функции
    
    SetFileAttributes( path, FILE_ATTRIBUTE_HIDDEN );                // теперь делаем файл скрытым
    cout << "File is " << fileAttributes( path ) << "." << endl;     // выводим результаты работы функции
    
    SetFileAttributes( path, FILE_ATTRIBUTE_NORMAL );                // а сейчас возвращаем файл в нормальный режим
    cout << "File is " << fileAttributes( path ) << "." << endl;     // выводим результаты работы функции
    
    getch();                                  // ожидание символа (программа не  закрывается сразу после исполнения)
    return 0;                                 // успешное завершение программы
}
 
// функция, возвращающая атрибут файла
string fileAttributes( const char *path )
{
    DWORD Attrs = GetFileAttributes( path );           // вызываем функцию GetFileAttributes и
                                                       // результат её работы присваиваем переменной Attrs типа DWORD
 
    switch( Attrs ) {                           // возвращаем ту или иную строку в зависимости от значения Attrs
        case FILE_ATTRIBUTE_READONLY:           // если файл только для чтения
            return "readonly";                  // вернуть строку "readonly"
            break;                              // выход из 'switch'
        case FILE_ATTRIBUTE_HIDDEN:             // если файл скрыт
            return "hidden";                    // вернуть строку "hidden"
            break;                              
        case FILE_ATTRIBUTE_DEVICE:             // если файл системный
            return "device_file";               // вернуть строку "device_file"
            break;                             
        case FILE_ATTRIBUTE_REPARSE_POINT:      // если файл - метка тома
            return "point_file";                // вернуть строку "point_file"
            break;                             
        case FILE_ATTRIBUTE_DIRECTORY:          // если файл - директория
            return "directory";                 // вернуть строку "directory"
            break;                              
        case FILE_ATTRIBUTE_ARCHIVE:            // если файл архивный
            return "archive_file";              // вернуть строку "archive_file"
            break;
        case FILE_ATTRIBUTE_COMPRESSED:         // если файл сжат
            return "compressed_file";           // вернуть строку "compressed_file"
            break;
        default:                                // в любом другом случае
            return "another_file";              // вернуть строку "another_file"
            break;
    }                                           // конец switch
}                                               // конец функции fileAttributes
Кстати, такой вопрос, строка 59 не нужна ведь, да?
Jupiter
Каратель
Эксперт C++
6542 / 3962 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
10.01.2012, 12:57     Спецификация файла. WTF? #7
Цитата Сообщение от vortexx1 Посмотреть сообщение
Кстати, такой вопрос, строка 59 не нужна ведь, да?
не нужны и 56 и 53 и т.д.
vortexx1
 Аватар для vortexx1
6 / 6 / 2
Регистрация: 06.03.2011
Сообщений: 269
10.01.2012, 13:12  [ТС]     Спецификация файла. WTF? #8
Спасибо, исправил:

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
#include <iostream>                             // подключаем ввод/вывод
#include <string>                               // подключаем тип данных string
#include <windows.h>                            // подключаем функции windows
#include <conio.h>                              // подключаем для работы getch()
using namespace std;                            // включаем пространство имен std
 
string fileAttributes( const char * );          // прототип функции, возвращающей атрибут файла
 
// функция main, с которой начинается исполнение программы
int main()
{
    const char path[] = "MyFile.txt";                                // задаем путь к файлу
    cout << "File is '" << path << "'.\n" << endl;                   // выводим путь файла на экран
    
    // тестируем нашу функцию
    SetFileAttributes( path, FILE_ATTRIBUTE_READONLY );              // переводим файл в режим Read-only
    cout << "File is " << fileAttributes( path ) << "." << endl;     // выводим результаты работы функции
    
    SetFileAttributes( path, FILE_ATTRIBUTE_HIDDEN );                // теперь делаем файл скрытым
    cout << "File is " << fileAttributes( path ) << "." << endl;     // выводим результаты работы функции
    
    SetFileAttributes( path, FILE_ATTRIBUTE_NORMAL );                // а сейчас возвращаем файл в нормальный режим
    cout << "File is " << fileAttributes( path ) << "." << endl;     // выводим результаты работы функции
    
    getch();                                  // ожидание символа (программа не  закрывается сразу после исполнения)
    return 0;                                 // успешное завершение программы
}
 
// функция, возвращающая атрибут файла
string fileAttributes( const char *path )
{
    DWORD Attrs = GetFileAttributes( path );           // вызываем функцию GetFileAttributes и
                                                       // результат её работы присваиваем переменной Attrs типа DWORD
 
    switch( Attrs ) {                           // возвращаем ту или иную строку в зависимости от значения Attrs
        case FILE_ATTRIBUTE_READONLY:           // если файл только для чтения
            return "readonly";                  // вернуть строку "readonly"
        case FILE_ATTRIBUTE_HIDDEN:             // если файл скрыт
            return "hidden";                    // вернуть строку "hidden"
        case FILE_ATTRIBUTE_DEVICE:             // если файл системный
            return "device_file";               // вернуть строку "device_file"
        case FILE_ATTRIBUTE_REPARSE_POINT:      // если файл - метка тома
            return "point_file";                // вернуть строку "point_file"                     
        case FILE_ATTRIBUTE_DIRECTORY:          // если файл - директория
            return "directory";                             
        case FILE_ATTRIBUTE_ARCHIVE:            // если файл архивный
            return "archive_file";              // вернуть строку "archive_file"
        case FILE_ATTRIBUTE_COMPRESSED:         // если файл сжат
            return "compressed_file";           // вернуть строку "compressed_file"
        default:                                // в любом другом случае
            return "another_file";              // вернуть строку "another_file"
    }                                           // конец switch
}                                               // конец функции fileAttributes
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.01.2012, 14:48     Спецификация файла. WTF?
Еще ссылки по теме:

C++ Сформировать два текстовых файла из целых чисел. Записать в третий файл минимальный элемент первого файла и максимальный элемент второго файла
C++ map assigment of read only data member или WTF?
C++ Обработка исключений. Спецификация

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

Или воспользуйтесь поиском по форуму:
OstapBender
 Аватар для OstapBender
581 / 519 / 35
Регистрация: 22.03.2011
Сообщений: 1,585
10.01.2012, 14:48     Спецификация файла. WTF? #9
vortexx1, у файла может быть несколько атрибутов
Yandex
Объявления
10.01.2012, 14:48     Спецификация файла. WTF?
Ответ Создать тему
Опции темы

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