Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
C.doc
Скачиваний:
29
Добавлен:
08.05.2015
Размер:
1.17 Mб
Скачать

Функции работы со временем и датой

1. Получение текущей даты. Прототип функции:

void getdate(struct date *dateblk);

Структура date:

struct date {

int da_year;

char da_day;

char da_mon; };

Пример печати текущей даты в принятом виде:

#include <stdio.h>

#include <dos.h>

main()

{

struct date d;

getdate(&d);

printf(“\nСегодня %02d.%02d.%d”,(int)d.da_day,(int)d.da_mon,d.da_year);

}

2. Установка даты. Прототип функции:

void setdate(struct date *dateblk);

3. Получение текущего времени. Прототип функции:

void gettime(struct time *timep);

Структура time:

struct time {

unsigned char ti_min; /* минуты */

unsigned char ti_hour; /* часы */

unsigned char ti_hund; /* сотые секунды */

unsigned char ti_sec; /* секунды */};

Пример печати текущего времени:

#include <stdio.h>

#include <dos.h>

#include <time.h>

#include <stdlib.h>

void main(void)

{

struct time d;

gettime(&d);

printf(“\nСейчас %d:%02d%02d.%02d”,(int)d.ti_hour,

(int)d.ti_min, (int)d.ti_sec, (int)d.ti_hund);

}

4. Установка времени. Прототип функции:

void settime(struct time *timep);

5. Преобразование времени и даты в строковое представление. Прототип функции:

char *ctime(long *clock);

Значение clock можно получить с помощью функции time. Функция возвращает указатель на строку из 26 символов с фиксированными полями, например, вида:

Mon Mar 30 11:46:34 1998\n\0

Функции процессов

Этот класс функций предназначен для запуска задач из программы и установки режимов их работы.

1. Экстренное завершение процесса. Прототип функции:

void abort(void);

2. Завершение программы. Прототипы функций:

void exit(int status);

void _exit(int status);

exit при выполнении закрывает все файлы, закрывает буфер вывода и передает status как код завершения программы (обычно ненулевой код - это ошибка). _exit при выходе не закрывает файлов и не очищает вывод.

3. Вызов других программ. Прототипы функций:

int execl(char *pathname, char *arg0, char *arg1, ... , NULL);

Вызов программы с указанным pathname именем с параметрами arg0, arg1 ... Возвращается значение 0, если запуск успешный. Поиск программы осуществляется только в текущем и корневом каталогах.

int execlp(char *pathname, char *arg0, char *arg1, ... , NULL);

В этом случае программа ищется в каталогах, определенных в ДОС.

Пример вызова архиватора RAR из программы:

#include <stdio.h>

#include <process.h>

main()

{

if (execlp(“rar”,””,NULL)==-1) printf(“\nОшибка!\n”);

}

Примечания:1. При вызове функций execl и execlp процесс-родитель остается активным. 2. arg0 не используется (там находится строка вызова программы.

int spawnl(int mode, char *pathname, char *arg0, char *arg1, ... , NULL);

int spawnlp(int mode, char *pathname, char *arg0, char *arg1, ... , NULL);

mode указывает, какие действия делает процесс-родитель после вызова spawn...:

P_WAIT - заморозить выполнение процесса-родителя до завершения работы процесса-потомка,

P_NOWAIT - продолжить выполнение процесса-родителя после запуска процесса-потомка.

Параметры поиска у функций spawn... тактие же, как и у exec...

При ошибке вызова этих функций устанавливается значение системной переменной errno в одно из следующих значений:

E2BIG - слишком длинный список аргументов,

EACCES - ошибка доступа,

EMFILE - слишком много открытых файлов,

ENOENT - маршрут или файл не найдены,

ENOEXEC - ошибка в формате exec,

ENOMEM - недостаточно памяти для запуска процесса-потомка.

4. Запуск команд ДОС. Прототип функции:

int system(char *command);

Функция возвращает код возврата.

Пример копирования файла с именем s1.txt в s2.txt с помощью ДОС:

#include <stdlib.h>

#include <stdio.h>

main()

{

if (system(“copy s1.txt s2.txt”)!=0) printf(“\nОшибка!\n”);

}

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