Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


If константное выражение группа операций #elif константное выражение группа операций #else группа операций #endif




Отличие директив #ifdef/#ifndef заключается в том, что константное выражение может быть задано только с помощью #define.

У каждой директивы #if в исходном файле должна быть соответствующая закрывающая директива #endif. Между директивами #if и #endif может располагаться любое количество директив #elif, однако допускается не более одной директивы #else. Директива #else, если присутствует, должна быть последней перед директивой #endif.

Пример

#include <stdio.h>
#include <stdlib.h>
#define P 2
int main()

{

 

getchar system("chcp 1251");

system("cls");
#if P==1

printf("Выполняется ветка 1");
#elif P==2

printf("Выполняется ветка 2, P=%d", P);
#else

printf("Выполняется другая ветка, P=%d", P);
#endif ();

return 0;
}

Результат выполнения

 

Реализация функции задержки

#include <stdio.h>
#include <time.h>
void delay(int ms) // аргумент- требуемое время задержки в миллисекундах
{

int c = clock() + ms;

while(clock() < c);
}
int main()

{

printf("clock = %d\n", clock());

delay(1000);

printf("clock = %d\n", clock());

getchar();

return 0;
}

Результат выполнения

Назад

 

Работа с файлами

Для удобства обращения информация в запоминающих устройствах хранится в виде файлов.
Файл – именованная область внешней памяти, выделенная для хранения массива данных. Данные, содержащиеся в файлах, имеют самый разнообразный характер: программы на алгоритмическом или машинном языке; исходные данные для работы программ или результаты выполнения программ; произвольные тексты; графические изображения и т. п.
Каталог (папка, директория) – именованная совокупность байтов на носителе информации, содержащая название подкаталогов и файлов, используется в файловой системе для упрощения организации файлов.
Файловой системой называется функциональная часть операционной системы, обеспечивающая выполнение операций над файлами. Примерами файловых систем являются FAT (FAT – File Allocation Table, таблица размещения файлов), NTFS, UDF (используется на компакт-дисках).
Существуют три основные версии FAT: FAT12, FAT16 и FAT32. Они отличаются разрядностью записей в дисковой структуре, т.е. количеством бит, отведённых для хранения номера кластера. FAT12 применяется в основном для дискет (до 4 кбайт), FAT16 – для дисков малого объёма, FAT32 – для FLASH-накопителей большой емкости (до 32 Гбайт).

Рассмотрим структуру файловой системы на примере FAT32.

Файловая структура FAT32

Устройства внешней памяти в системе FAT32 имеют не байтовую, а блочную адресацию. Запись информации в устройство внешней памяти осуществляется блоками или секторами.
Сектор – минимальная адресуемая единица хранения информации на внешних запоминающих устройствах. Как правило, размер сектора фиксирован и составляет 512 байт. Для увеличения адресного пространства устройств внешней памяти сектора объединяют в группы, называемые кластерами.
Кластер – объединение нескольких секторов, которое может рассматриваться как самостоятельная единица, обладающая определёнными свойствами. Основным свойством кластера является его размер, измеряемый в количестве секторов или количестве байт.

Файловая система FAT32 имеет следующую структуру.

Нумерация кластеров, используемых для записи файлов, ведется с 2. Как правило, кластер №2 используется корневым каталогом, а начиная с кластера №3 хранится массив данных. Сектора, используемые для хранения информации, представленной выше корневого каталога, в кластеры не объединяются.
Минимальный размер файла, занимаемый на диске, соответствует 1 кластеру.

Загрузочный сектор начинается следующей информацией:

· EB 58 90 – безусловный переход и сигнатура;

· 4D 53 44 4F 53 35 2E 30 MSDOS5.0;

· 00 02 – количество байт в секторе (обычно 512);

· 1 байт – количество секторов в кластере;

· 2 байта – количество резервных секторов.

Кроме того, загрузочный сектор содержит следующую важную информацию:

· 0x10 (1 байт) – количество таблиц FAT (обычно 2);

· 0x20 (4 байта) – количество секторов на диске;

· 0x2С (4 байта) – номер кластера корневого каталога;

· 0x47 (11 байт) – метка тома;

· 0x1FE (2 байта) – сигнатура загрузочного сектора (55 AA).

Сектор информации файловой системы содержит:

· 0x00 (4 байта) – сигнатура (52 52 61 41);

· 0x1E4 (4 байта) – сигнатура (72 72 41 61);

· 0x1E8 (4 байта) – количество свободных кластеров, -1 если не известно;

· 0x1EС (4 байта) – номер последнего записанного кластера;

· 0x1FE (2 байта) – сигнатура (55 AA).

Таблица FAT содержит информацию о состоянии каждого кластера на диске. Младшие 2 байт таблицы FAT хранят F8 FF FF 0F FF FF FF FF (что соответствует состоянию кластеров 0 и 1, физически отсутствующих). Далее состояние каждого кластера содержит номер кластера, в котором продолжается текущий файл или следующую информацию:

· 00 00 00 00 – кластер свободен;

· FF FF FF 0F – конец текущего файла.

Корневой каталог содержит набор 32-битных записей информации о каждом файле, содержащих следующую информацию:

· 8 байт – имя файла;

· 3 байта – расширение файла;

Корневой каталог содержит набор 32-битных записей информации о каждом файле, содержащих следующую информацию:

· 8 байт – имя файла;

· 3 байта – расширение файла;

· 1 байт – атрибут файла:

· 1 байт – зарезервирован;

· 1 байт – время создания (миллисекунды) (число от 0 до 199);

· 2 байта – время создания (с точностью до 2с):

· 2 байта – дата создания:

· 2 байта – дата последнего доступа;

· 2 байта – старшие 2 байта начального кластера;

· 2 байта – время последней модификации;

· 2 байта – дата последней модификации;

· 2 байта – младшие 2 байта начального кластера;

· 4 байта – размер файла (в байтах).

В случае работы с длинными именами файлов (включая русские имена) кодировка имени файла производится в системе кодировки UTF-16. При этого для кодирования каждого символа отводится 2 байта. При этом имя файла записывается в виде следующей структуры:

· 1 байт последовательности;

· 10 байт содержат младшие 5 символов имени файла;

· 1 байт атрибут;

· 1 байт резервный;

· 1 байт – контрольная сумма имени DOS;

· 12 байт содержат младшие 3 символа имени файла;

· 2 байта – номер первого кластера;

· остальные символы длинного имени.

Далее следует запись, включающая имя файла в формате 8.3 в обычном формате.





Поделиться с друзьями:


Дата добавления: 2016-11-02; Мы поможем в написании ваших работ!; просмотров: 695 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Два самых важных дня в твоей жизни: день, когда ты появился на свет, и день, когда понял, зачем. © Марк Твен
==> читать все изречения...

2283 - | 2108 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.