Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
c++ справка по функциям.doc
Скачиваний:
31
Добавлен:
25.04.2014
Размер:
4 Мб
Скачать

Ungetch

-----------------------------------------------------------------

Назначение Возвращает символ обратно в буфер клавиатуры.

Синтаксис int ungetch(int ch);

Прототип в conio.h

Замечания ungetch возвращает символ ch обратно на кон-

соль, поэтому он будет следующим прочитанным

символом. Функция ungetch не будет выполнена,

если она вызывается более одного раза перед

следующим чтением.

Возвращаемое В случае успеха ungetch возвращает символ ch.

значение Если операция не удалась, возвращается EOF.

Переносимость ungetch доступна в UNIX-системах.

См. также getch,getche

-----------------------------------------------------------------

Unixtodos

-----------------------------------------------------------------

Назначение Преобразует дату и время к формату DOS.

Синтаксис #include <dos.h>

void unixtodos(long time, struct date *d,

struct time *t);

Прототип в dos.h

Замечания unixtodos преобразует время, заданное в time в

формате UNIX, к формату DOS и заполняет струк-

туры date и time, на которые указывают d и t.

Возвращаемое Нет.

значение

Переносимость unixtodos уникальна для DOS.

-----------------------------------------------------------------

unlink

-----------------------------------------------------------------

Назначение Уничтожает файл.

Синтаксис int unlink(const char *filename);

Прототип в dos.h, io.h, stdio.h

Замечания unlink уничтожает файл, специфицированный аргу-

ментом filename. В filename могут указываться

любые устройства DOS, маршруты доступа и имена

файлов. Использование метасимволов недопустимо.

Файлы, предназначенные только для чтения, не

могут быть уничтожены путем обращения к этой

функции. Для уничтожения таких файлов необходи-

мо предварительно с помощью функций chmod или

_chmod изменить соответствующие атрибуты.

Возвращаемое В случае успешного завершения unlink возвращает

значение 0. В случае ошибки возвращается -1 и переменная

errno принимает одно из следующих значений:

ENOENT - маршрут или имя файла не обнаружены

EACCES - не разрешен доступ к файлу

Переносимость unlink доступна в UNIX-системах.

См. также chmod,remove

-----------------------------------------------------------------

unlock

-----------------------------------------------------------------

Назначение Разрешает совместное использование файла.

Синтаксис int unlock(int handle, long offset,

long length);

Прототип в io.h

Замечания unlock обеспечивает интерфейс к механизму сов-

местного использования файлов DOS 3.X.

unlock удаляет защиту (замок), установленную

перед этим функцией lock. Для предотвращения

ошибки все замки должны быть сняты до закрытия

файла.

Возвращаемое unlock возвращает 0 в случае успешного заверше-

значение ния и -1 в случае ошибочного.

Переносимость unlock уникальна для DOS 3.x. Более старшие

версии ее не поддерживают.

См. также lock, sopen

-----------------------------------------------------------------

va_...

-----------------------------------------------------------------

Назначение Позволяет использовать переменный список аргу-

ментов.

Синтаксис #include <stdarg.h>

void va_start(va_list param, lastfix);

type va_arg(va_list param, type);

void va_end(va_list param);

Прототип в stdarg.h

Замечания Некоторые функции Си, такие как vfprintf и

vprintf, имеют переменный список аргументов до-

полнительно к фиксированным. Макросы семейства

va_... позволяют осуществить доступ к такому

списку аргументов. Эти макросы используются для

поэлементной обработки списка аргументов, когда

вызываемой функции неизвестно ни количество, ни

типы передаваемых ей аргументов.

Файл-заголовок stdarg.h содержит описание одно-

го типа (va_list) и трех макросов (va_start,

va_arg, va_end).

va_list

-------

Этот массив содержит информацию, необходимую

для va_arg и va_end. Когда вызываемая функция

принимает переменный список аргументов, он объ-

является как переменная param типа va_list.

va_start

--------

Эта подпрограмма (реализованная как макрос)

присваивает param значение указателя на первый

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

дан функции. va_start должна быть вызвана до

первого обращения к va_arg или va_end.

va_start имеет два параметра: param и lastfix

(param рассмотрен при описании va_list в преды-

дущем параграфе; lastfix - имя последнего фик-

сированного параметра, передаваемого вызываемой

функции).

va_arg

------

Эта процедура (также реализованная как макрос)

расширяется в выражение, которое имеет тот же

тип и значение, что и следующий аргумент, кото-

рый должен быть передан функции (один из аргу-

ментов переменного списка). Переменная param в

va_arg должна быть той же самой переменной

param, которая инициализировалась в va_start.

При первом обращении к va_arg, она возвращает

первый аргумент списка. При каждом последующем

обращении к va_arg, она будет возвращать следу-

ющий аргумент из списка. Она осуществляет это

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

param, после чего значение param увеличивается

до значения указателя на следующий элемент.

va_arg использует аргумент type как для получе-

ния текущего элемента, так и для коррекции ука-

зателя на следующий элемент. При каждом обраще-

нии к va_arg она изменяет значение указателя

param так, чтобы он указывал на следующий аргу-

мент списка.

va_end

------

Этот макрос помогает при обращении к функции

обеспечить ее нормальное завершение. va_end мо-

жет так модифицировать param, что он не сможет

использоваться до повторного обращения к

va_start. va_end должен быть вызван после того,

как va_arg прочитает все аргументы списка; иг-

норирование этого может послужить причиной

странного и непредвиденного поведения вашей

программы.

Возвращаемое va_start и va_end не возвращают никаких значе-

значение ний; va_arg возвращает текущий аргумент списка

(тот самый, на который указывает param).

Переносимость va_arg, va_start и va_end доступны в UNIX -

системах.

См. также v...printf, v...scanf

Пример 1 #include <stdio.h>

#include <stdarg.h>

/* вычисление суммы списка, завершающегося 0 */

void sum(char *msg, ...)

{

int total = 0;

va_list ap;

int arg;

va_start(ap, msg);

while ((arg = va_arg(ap,int)) !=0 )

{

total += arg;

}

printf(msg, total);

}

main()

{

sum ("Итоговая сумма 1+2+3+4 равна %d\n",

1,2,3,4,0);

}

Вывод программы

Итоговая сумма 1+2+3+4 равна 10

Пример 2 #include <stdio.h>

#include <stdarg.h>

void error(char *format,...)

{

va_list argptr;

printf("ошибка: ");

va_start(argptr, format);

vprintf(format, argptr);

va_end(argptr);

}

main()

{

int value = -1;

error("это просто сообщение об ошибке \n");

error("обнаружено неверное значение %d\n,

value);

}

Вывод программы

ошибка: это просто сообщение об ошибке

ошибка: обнаружено неверное значение -1

-----------------------------------------------------------------

Соседние файлы в предмете Информатика