Операційна система MS-DOS у внутрішніх змінних береже номер поточного накопичувача і поточний робочий директорій для кожного накопичувача. Turbo С містить функції, що дозволяють з програми визначити і встановити потрібні значення поточного директорію і поточного накопичувача. Нижче описані придатні для цього функції.
#include <dir.h>
int getdisk( void )
Повертає ціле число, що ідентифікує поточний накопичувач системи.
Накопичувач А ідентифікується значенням 0, накопичувач В - 1, С - 2 і т.д.
# include <dir.h>
int setdisk( int drive )
Встановлює в системі поточний накопичувач, що задається значенням
drive. Накопичувач А ідентифікується значенням 0, накопичувач В - 1. С - 2 і
т.д. У випадку успіху повертається загальне число накопичувачів у системі; у
протилежному випадку повертається -1 і в зовнішню перемінну errno записується
код помилки.
#include <dir.h>
int getcurdir( int drive, char *directory )
В область пам’яті на яку вказує directory, записується ASCIIZ рядок
поточного директорію для накопичувача, що задається значенням drive. Якщо
drive=0 запитується інформація про директорій поточного робочого накопичувача
(накопичувача за замовчанням), якщо drive=1, - інформація про накопичувач А,
якщо drive=2, про накопичувач В и т. д. У випадку успіху повертає 0;
протилежному випадку повертається -1 і в зовнішню змінну errno записується код
помилки.
#include<dir.h>
char *getcwd( char *buf, int buflen )
Поміщає в буфер, на початок якого вказує buf, букву поточного
накопичувача й абсолютний маршрут поточного робочого директорія. Параметр
buflen передає функції максимальне число символів, що може бути розміщене в
буфері buf. Якщо buf дорівнює NULL, функція динамічно розподіляє buflen байт,
куди записує запитану інформацію. У випадку успіху функція повертає покажчик на
початок області пам’яті, у якій розміщено ASCIIZ-рядок специфікації поточного
накопичувача і директорія. У протилежному випадку повертається NULL і в
зовнішню змінну errno записується код помилки. Якщо він дорівнює ERANGE,
довжина сформованого рядка перевищує buflen. Якщо buf дорівнює NULL і немає
вільної пам’яті, errno дорівнює ENOMEM. Функція дуже зручна для зберігання
встановлених накопичувача і директорія з метою наступного їх відновлення, якщо
програма буде змінювати накопичувач і директорій.
#include<dir.h>
int chdir( const char *palh )
Встановлює в якості поточного робочого директорію директорій, що
задається ASCIIZ-рядком, на якій вказує path. У випадку успіху повертається 0;
у протилежному випадку повертається -1 і в зовнішню змінну errno записується
код помилки.
Наведемо приклад програми, що роздруковує поточні директорії для всіх накопичувачів системи і визначає поточний накопичувач:
/*L4_1.C*1
#include <dir.h>
#include <stdio.h>
char path[ 64 ];
void main( void ) {
int drive=1;
path[0]=‘\\’;
while(!(getcurdir(drive, path+1))) {
printf(“Накопичувач %c: - Поточний
директорій %s\n”,
(drive+’A’-1), path);
drive++;
}
printf(“Поточний накопичувач %c: \n”,
(getdisk()+’A’));
}
![]() |
![]() |
![]() |