Банк рефератов содержит более 364 тысяч рефератов, курсовых и дипломных работ, шпаргалок и докладов по различным дисциплинам: истории, психологии, экономике, менеджменту, философии, праву, экологии. А также изложения, сочинения по литературе, отчеты по практике, топики по английскому.
Полнотекстовый поиск
Всего работ:
364150
Теги названий
Разделы
Авиация и космонавтика (304)
Административное право (123)
Арбитражный процесс (23)
Архитектура (113)
Астрология (4)
Астрономия (4814)
Банковское дело (5227)
Безопасность жизнедеятельности (2616)
Биографии (3423)
Биология (4214)
Биология и химия (1518)
Биржевое дело (68)
Ботаника и сельское хоз-во (2836)
Бухгалтерский учет и аудит (8269)
Валютные отношения (50)
Ветеринария (50)
Военная кафедра (762)
ГДЗ (2)
География (5275)
Геодезия (30)
Геология (1222)
Геополитика (43)
Государство и право (20403)
Гражданское право и процесс (465)
Делопроизводство (19)
Деньги и кредит (108)
ЕГЭ (173)
Естествознание (96)
Журналистика (899)
ЗНО (54)
Зоология (34)
Издательское дело и полиграфия (476)
Инвестиции (106)
Иностранный язык (62792)
Информатика (3562)
Информатика, программирование (6444)
Исторические личности (2165)
История (21320)
История техники (766)
Кибернетика (64)
Коммуникации и связь (3145)
Компьютерные науки (60)
Косметология (17)
Краеведение и этнография (588)
Краткое содержание произведений (1000)
Криминалистика (106)
Криминология (48)
Криптология (3)
Кулинария (1167)
Культура и искусство (8485)
Культурология (537)
Литература : зарубежная (2044)
Литература и русский язык (11657)
Логика (532)
Логистика (21)
Маркетинг (7985)
Математика (3721)
Медицина, здоровье (10549)
Медицинские науки (88)
Международное публичное право (58)
Международное частное право (36)
Международные отношения (2257)
Менеджмент (12491)
Металлургия (91)
Москвоведение (797)
Музыка (1338)
Муниципальное право (24)
Налоги, налогообложение (214)
Наука и техника (1141)
Начертательная геометрия (3)
Оккультизм и уфология (8)
Остальные рефераты (21697)
Педагогика (7850)
Политология (3801)
Право (682)
Право, юриспруденция (2881)
Предпринимательство (475)
Прикладные науки (1)
Промышленность, производство (7100)
Психология (8694)
психология, педагогика (4121)
Радиоэлектроника (443)
Реклама (952)
Религия и мифология (2967)
Риторика (23)
Сексология (748)
Социология (4876)
Статистика (95)
Страхование (107)
Строительные науки (7)
Строительство (2004)
Схемотехника (15)
Таможенная система (663)
Теория государства и права (240)
Теория организации (39)
Теплотехника (25)
Технология (624)
Товароведение (16)
Транспорт (2652)
Трудовое право (136)
Туризм (90)
Уголовное право и процесс (406)
Управление (95)
Управленческие науки (24)
Физика (3463)
Физкультура и спорт (4482)
Философия (7216)
Финансовые науки (4592)
Финансы (5386)
Фотография (3)
Химия (2244)
Хозяйственное право (23)
Цифровые устройства (29)
Экологическое право (35)
Экология (4517)
Экономика (20645)
Экономико-математическое моделирование (666)
Экономическая география (119)
Экономическая теория (2573)
Этика (889)
Юриспруденция (288)
Языковедение (148)
Языкознание, филология (1140)

Лабораторная работа: Програма для сканування каталогу на наявність відповідних файлів

Название: Програма для сканування каталогу на наявність відповідних файлів
Раздел: Рефераты по информатике, программированию
Тип: лабораторная работа Добавлен 03:16:09 07 апреля 2011 Похожие работы
Просмотров: 66 Комментариев: 2 Оценило: 0 человек Средний балл: 0 Оценка: неизвестно     Скачать

Міністерство освіти і науки України

Житомирський державний технологічний університет

Лабораторна робота №2

з курсу «Системне програмування»

м. Житомир 2011 р.


Зміст

1. Розібрати роботу програми find.с

2. Проекспериментувати з функціями findfirst(), findnext(), змінюючи атрибути шуканих файлів

3.Вияснити призначення поля ff_reserved в структурі ffblk

4.Сформувати сьогоднішню дату та час в два байти, відповідно описаним правилам

5.Змінити програму так, щоб вона показувала лише

Контрольні запитання

Висновок

Список використаної літератури


1. Розібрати роботу програми find.с

Підключаємо стандартні бібліотеки:

#include <stdio.h>

#include <stdlib.h>

#include <dir.h>

#include <dos.h>

#include <conio.h>

Оголошуємо прототипи функцій:

void print_info( struct ffblk *find );

char *time_conv( unsigned time, char *char_buf );

char *date_conv( unsigned date, char *char_buf );

Головна функція main() отримує у якості аргументів цілочисельний аргумент argc який містить кількість аргументів у командному рядку та покажчик на масив покажчиків на рядки, де кожен вказує на певний аргумент командного рядка.

void main( int argc, char *argv[] ) {

Оголошуємо змінну find типу ffblk, що єструктурою визначеною у бібліотеці <dir.h> і включає наступні поля:

char ff_reserved[ 21 ]; /* зарезервовано для MS-DOS */;

char ff_attrib; /* атрибут з елементу директорія */

unsigned ff_ftime; /* поле часу з елементу директорія */

unsigned ff_fdate; /* поле дати з елементу директорія */

long ff_fsize; /* поле розміру файлу з елементу директорія */

char ff_name[ 13 ]; /*ASCIIZ- рядок з ім’ям і розширенням файлу */

struct ffblk find;

Викличемо функцію findfirst(), задавши їй у якості параметрів другий аргумент із командного рядка, посилання на структуру find та файловий атрибут.

Функція findfirst() повертає нуль у випадку успіху, тобто даний оператор if перевіряє чи виконалась функція із заданими параметрами.

if( !findfirst( argv[1], &find, FA_ARCH ) ) {

Якщо findfirst() виконалася правильно, то інформація буде занесена до структури find. Викличемо функцію print_info(), яка і надрукує структуру у відповідному форматі.

printf( "\n"

"\nFile Name Attr Date Time Size"

"\n------------ ---- ---------- -------- --------" );

print_info( &find );

}

У разі помилки findfirst() поверне -1 і виконається оператор else, який надрукує відповідну інформацію про правильність заповнення командного рядка і завершить виконання програми.

else {

printf( "\nUsage: FIND filename"

"\n Wildcards ""!"" and ""*"" is OK.\n" );

getch();

exit( -1 );

}

Функція findnext() продовжує пошук файлів, який розпочала функціяfindfirst(). Findnext() також повертає нуль у випадку успішного виконання. Тому за допомогою оператора while продовжуємо пошук до тих пір доки це можливо, тобто доки findnext () не поверне -1.

while( !findnext( &find ) )

print_info( &find );

Завершимо виконання програми.

getch();

exit( 0 );

}

Функція print_info() призначена для друку структури ffblk у відповідному зрозумілому для користувача форматі. Функція нічого не повертає. У якості парметрів приймає покажчик на структуру ffblk.

void print_info( struct ffblk *pfind ) {

Оголосимо два мив мольних масиви, які будуть зберігати відповідно час та дату у форматі рядка.

char timebuf[10], datebuf[12];

Викличемо date_conv() та time_conv() для конвертації полів дати і часу із цілочисельного формату до рядкового.

date_conv( pfind->ff_fdate, datebuf );

time_conv( pfind->ff_ftime, timebuf );

Надрукуємо поля структури ffblk.

printf( "\n%-12s ", pfind->ff_name);

printf( "0x%02X %8s %8s %8ld ",

pfind->ff_attrib, datebuf, timebuf, pfind->ff_fsize );

}

Функція time_conv() конвертує час представлений у вигляді одного беззнакового цілого у рядок. Функція приймає у якості параметрів числоt, яке і є часом, та покажчик на рядок *buf, що і буде представленням дати у форматі рядка. Функція повертає покажчик на рядок.

char *time_conv( unsigned t, char *buf ) {

Перетворення відбувається наступним чином. Оголосимо цілочисельні змінні hour, minute, second.

int hour, minute, second;

ff_ftime є 16-бітовою структурою поділеною на бітові області, кожна з яких і відповідає годині, хвилині, та секунді. Числу годин відповідають з 11 по 15 біти, хвилин – з 5 по 10, і секунд поділених на 2 – з 0 по 4 відповідно. Таким чином, для того щоб виокремити кожен із елементів, зсунемо побітово число t (час) на відповідну кількість бітів і скористаємося оператором & (і).

hour = ( t >> 11 ) & 0x1F;

minute = ( t >> 5 ) & 0x3F;

second = ( t & 0x1F ) * 2;

За допомогою функції sprintf() пер направимо змінні hour, minute, second у відповідному форматі до масиву на який вказуєbuf.

sprintf( buf, "%2.2d:%02.2d:%02.2d", hour, minute, second);

return( buf );

}

Функція date_conv(), подібно функції time_conv(), переводить формат подачі дати із цілого числа в рядок. Дню відповідають з 0 по 4 біти, місяцю – з 5 по 8, а року, починаючи з 1980, – з 9 по 15 біти.

char *date_conv( unsigned d, char *buf ) {

int day, month, year;

day = d & 0x1f;

month = ( d >> 5 ) & 0x0f;

year = ( d >> 9 ) + 1980;

sprintf( buf, "%2.2d.%02.2d.%04.2d", day, month, year);

return( buf );

}

2. Проекспериментувати з функціями findfirst(), findnext(), змінюючи атрибути шуканих файлів

Функція findfirst() у якості одного із параметрів приймає атрибут відкриття файлу. Функція findnext() використовує ті ж атрибути, що визначені у функції findfirst(). Таким чином ми можемо встановити такі атрибути доступу:

· FA_RDONLY (Read-only attribute) – тільки для читання;

· FA_HIDDEN (Hidden file) – скриті файли;

· FA_SYSTEM (System file) – ситемні файли;

· FA_LABEL (Volume label) – мітка тому;

· FA_DIREC (Directory) – директорії;

· FA_ARCH (Archive) - архівніфайли.

3. Вияснити призначення поля ff_reserved в структурі ffblk

В структурі ffblk є поле ff_reserved, яке призначене для використання системою MS-DOS. Поле має тип масив розмірністю 21 символ.

4. Сформувати сьогоднішню дату та час в два байти, відповідно описаним правилам

Нехай маємо дату - 31.12.2010

Під дату виділяється 2 байти

|15. . . . . . . . . . .9|8. . . . . .5|4. . . . . . . .0|

|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|

| Years -1980 | Month | Day |

day 31 = 11111

mon 12 = 1100

yaer 2010-1980 = 0011110

date = 0000 0000 0000 0000

1. date = year

000000000 0011110

2. date << 4

00000 0011110 0000

3. date | mon

00000 0011110 1100

4. date << 5

0011110 1100 00000

5. date | day

0011110 1100 11111 = 15775

Отже, 31.12.2010 = 15775.

Нехай маємо час - 16:59:35.

Під дату виділяється 2 байти

|15…….....11|10...............5|4…............0|

|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|_|

| Hours | Minutes | Seconds/2 |

H 16 = 10000

M 59 = 111011

S 35/2 = 10001

time = 00000 000000 00000

1.time = H

00000 000000 10000

2.time << 6

00000 10000 000000

3.time | M

00000 10000 111011

4.time << 5

10000 111011 00000

5.time | S

10000 111011 10001 = 34673

Отже, 16:59:35 = 34673.

програма сканування файл директорія

5. Змінити програму так, щоб вона показувала лише

· директорії;

if( !findfirst( argv[1], &find, FA_ DIREC ) )

· приховані файли;

if( !findfirst( argv[1], &find, FA_ HIDDEN ) )

· системні файли;

if( !findfirst( argv[1], &find, FA_ SYSTEM ) )

· директорії та системні файли.

if( !findfirst( argv[1], &find, FA_ SYSTEM || FA_ DIREC ) )

Контрольні запитання

1. Як функція findnext() "дізнається", які файли потрібно шукати?

Функція findnext() шукає файли, параметри яких задані у функції findfirst().

2. Чому час зміни файла записується з точністю до двох секунд?

У структурі ffblk виділене поле unsigned ff_ftime для представлення часу. У цьому полі числу секунд поділених на 2 (тому із точністю до двох секунд) виділно 5 бітів – з 0 по 4 відповідно, а це максимум число 31.

3. Звідки береться інформація структури ffblk?

Якщо функція findfirst() знаходить файл, то структура ffblk заповнюється інформацією про каталог і файл

4. Що таке елемент директорію?

Директорій – це спеціальний файл на диску, який складається з так званих елементів директорію. Розмір елементу в MS-DOS – 32 байта. Розмір кореневого директорія обмежений і залежить від формату диску. Наприклад, для диску 360К байт в кореневому директорії може розміститься тільки 112 елементів. Файл кореневого директорія розташується в фіксованому місці диску. Нижчі в ієрархії директорії називаються субдиректоріями вони можуть розташуватися в будь-якому місці диску і мати число елементів, обмежене лише фізичним об’ємом диску.

Формат елементу директорію MS-DOS


Висновок

Отже, на даній лабораторній роботі було проаналізовано програму для сканування каталогу на наявність відповідних файлів. У ході виконання було розібрано роботу функцій findfirst() та findnext(), а також будову та призначення структури ffblk.

У ході виконання лабораторній роботи, були здобуті навики роботи зі структурою ffblk, а саме з переведенням дати та часу у формат типу unsigned.


Список використаної літератури

1. Касаткін А.І. Управление ресурсами. - Минск: Вышейшая школа, 1992.

2. Касаткін А.І. Системное программирование. - Минск: Вышейшая школа, 1991.

3. Власенко О.В., Данильченко О.М., Северин О.О. Системне прогрмамування. Курс лекцій. Частина 1. (бібліотека ЖІТІ)

Оценить/Добавить комментарий
Имя
Оценка
Комментарии:
Где скачать еще рефератов? Здесь: letsdoit777.blogspot.com
Евгений07:42:12 19 марта 2016
Кто еще хочет зарабатывать от 9000 рублей в день "Чистых Денег"? Узнайте как: business1777.blogspot.com ! Cпециально для студентов!
10:19:39 29 ноября 2015

Работы, похожие на Лабораторная работа: Програма для сканування каталогу на наявність відповідних файлів

Назад
Меню
Главная
Рефераты
Благодарности
Опрос
Станете ли вы заказывать работу за деньги, если не найдете ее в Интернете?

Да, в любом случае.
Да, но только в случае крайней необходимости.
Возможно, в зависимости от цены.
Нет, напишу его сам.
Нет, забью.



Результаты(150192)
Комментарии (1830)
Copyright © 2005-2016 BestReferat.ru bestreferat@mail.ru       реклама на сайте

Рейтинг@Mail.ru