Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Samostoyatelnye_po_S.doc
Скачиваний:
6
Добавлен:
01.07.2025
Размер:
672 Кб
Скачать
☆

Визначення поточної робочої директорії

char * getcwd (char * buf,, int buflen);

Визначає поточну робочу директорію

char * _getdcwd (int disk, char * buf,, int buflen);

Визначення поточної директорії для вказаного диска, при цьому 0 - поточний диск, 1 - А, 2 - B, ...

Якщо повне ім'я файлу, включаючи нульовий ознака кінця рядка більше ніж buflen, виникає помилка.

Якщо buf = NULL, _getdcwd викликає malloc для виділення динамічної пам'яті за адресою buf в кількості buflen байт. Пізніше можна звільнити цю пам'ять за допомогою функції free, використовуючи адресу, повертаний цими функціями.

При успіху функції повертають buf.

При невдачі вони повертають NULL і привласнюють errno одне з наступних значень:

ENODEV - немає такого диска

ENOMEM - немає пам'яті для розміщення buf,

ERANGE - ім'я каталогу довший, ніж buflen.

Приклад.

# Include <stdio.h>

# Include <dir.h>

int main (void)

{

char buffer [MAXPATH];

getcwd (buffer, MAXPATH);

printf ("Поточним каталогом є:% s \ n", buffer);

return 0;

}

Приклад.

# Include <direct.h>

# Include <stdio.h>

char buf [65];

void main ()

{

if (_getdcwd (3, buf, sizeof (buf)) == NULL)

perror ("Не можна отримати поточну директорію на диску C: \ n");

else

printf ("Поточною директорією на диску C: є% ​​s \ n", buf);

}

Визначення поточного каталогу диска

int getcurdir (int drive, char * directory);

directory вказує на область пам'яті розміром не менше MAXDIR, куди буде поміщено ім'я поточного каталогу. Ім'я не містить вказівки диска.

Повертає 0 у випадку успіху та -1 при помилці.

Приклад.

char * current_directory (char * path)

{

strcpy (path, "X: \ \"); / * fill string with form of response: X: \ * /

path [0] = 'A' + getdisk (); / * replace X with current drive letter * /

getcurdir (0, path +3); / * fill rest of string with current directory * /

return path;

}

int main (void)

{

char curdir [MAXPATH];

current_directory (curdir);

printf ("The current directory is% s \ n", curdir);

return 0;

}

Визначення розміру вільного дискового простору

void getdfree (unsigned char drive, struct dfree * dtable);

Функція заповнює структуру dtable для указна диска (0 - поточний диск, 1 - А, 2 - B, ...).

struct dfree {

unsigned df_avail, / / число вільних кластерів

unsigned df_total, / / все кластерів

unsigned df_bsec, / / число байтів в секторі

unsigned df_sclus, / / число секторів в кластері

}

При помилку привласнює елементу df_sclus структури dfree значення 0xFFFF.

# include <stdio.h>

# include <stdlib.h>

# include <dir.h>

# include <dos.h>

int main (void)

{

struct dfree free;

long avail;

int drive;

drive = getdisk ();

getdfree (drive +1, & free);

if (free.df_sclus == 0xFFFF)

{

printf ("Error in getdfree () call \ n");

exit (1);

}

avail = (long) free.df_avail

* (Long) free.df_bsec

* (Long) free.df_sclus;

printf ("Drive% c: has% ld bytes available \ n", 'A' + drive, avail);

return 0;

}

Визначення / встановленн поточного диска

int getdisk ();

int setdisk (int drive);

Нумерація дисків: 0 - А, 1 - В, 2 - С, ...

getdisk повертає номер поточного диска, setdisk повертає загальну кількість доступних дисків.

Приклад.

# include <stdio.h>

# include <dir.h>

int main (void)

{

int disk, maxdrives = setdisk (2);

disk = getdisk () + 'A';

printf ("\ nКолічество логічних дисків:% d \ n", maxdrives);

printf ("Поточний диск:% c \ n", disk);

return 0;

}

Приклад.

# include <stdio.h>

# include <dir.h>

int main (void)

{

int save, disk, disks;

/ * Зберегти вихідний диск * /

save = getdisk ();

/ * Надрукувати кількість логічних дисків * /

disks = setdisk (save);

printf ("У системі% d логічних дисків \ n \ n", disks);

/ * Надрукувати імена доступних логічних дисків * /

printf ("Доступні диски: \ n");

for (disk = 0; disk <26; + + disk)

{

setdisk (disk);

if (disk == getdisk ())

printf ("% c: диск доступний \ n", disk + 'a');

}

setdisk (save);

return 0;

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]