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

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(). Таким чином ми можемо встановити такі атрибути доступу:

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