9.6.2.2. Переопределение дескрипторов (handle)
Когда программа начинает выполняться, пять дескрипторов ( handle), соответствующих стандартным вводу, выводу, выводу сообщений об ошибках, порту и устройству печати, уже назначены. Пользователь может использовать значения этих дескрипторов при вызове функций ввода/вывода нижнего уровня.
Каждый из этих дескрипторов соответствует одному из стандартных потоков, значения этих дескрипторов таковы:
поток |
значение дескриптора |
stdin |
0 |
stdout |
1 |
stderr |
2 |
stdaux |
3 |
stdprn |
4 |
Можно использовать эти дескрипторы файлов в программе без предварительного открытия этих файлов. Они автоматически открываются при запуске программы.
Так же, как с функциями для потоков, Вы можете использовать перенаправление, чтобы переопределить стандартный ввод и вывод.
Функции dupи dup2позволяют назначать несколько handleдля одного файла; эти функции обычно используются, чтобы связать дополнительные дескрипторы с уже используемыми файлами.
Функции readи write, как и функции ввода/вывода верхнего уровня, начинают выполнение очередной операции с текущей позиции в файле. Текущая позиция изменяется при каждой операции чтения или записи.
Функция eofможет быть использована для проверки на конец файла.
Когда происходит ошибка, программы в/в нижнего уровня присваивают код ошибки переменной errno. Можно использовать функцию perrorдля печати информации об ошибках в/в. Можно позиционировать указатель файла на определенную позицию в файле, используя функцию lseek. Используя функцию tell, можно определить текущую позицию указателя файла. Устройства типа консольного терминала не имеют указателя файла. Результат функций lseekи tellне определен, если они применяются к дескриптору, связанному с таким устройством.
Функция closeзакрывает открытые файлы. Открытые файлы также автоматически закрываются при неаварийном завершении программы.
Функции вода/вывода с консольного терминала и порта
Функции ввода/вывода для консольного терминала выделены в отдельную группу, потому что они используют специфические особенности компьютера IBM/PC (наличие специального видеоадаптера) и не являются переносимыми на другие типы компьютеров.
функция |
Краткое описание |
cgets |
чтение строки с консоли |
cprintf |
запись данных на консольный терминал по формату |
cputs |
вывод строки на консольный терминал |
getch |
чтение символа с консоли |
getche |
чтение символа с консоли с эхо-печатью |
kbhit |
проверка нажатия клавиши на консоли |
putch |
вывод символа на консольный терминал |
ungetch |
возврат последнего прочитанного символа с консольного символа обратно с тем, чтобы он стал следующим символом для чтения |
Система программирования MSC предоставляет дополнительно функцию cscanf - чтение данных с консоли по формату.
Система программирования ТС предоставляет дополнительно функцию getpass - ввод с терминала пароля без эхо-печати
Прототипы функций содержатся в файле conio.h. Устройства: консольный терминал и порт не могут быть открыты или закрыты перед выполнением в/в, поэтому функции fopenи fcloseне вызываются. Функции в/в с консольного терминала позволяют читать и записывать строки ( cgetsи cputs), форматированные данные ( cscanfи cprintf) и символы. Функция kbhitопределяет: было ли нажатие клавиши на консольном терминале. Эта функция позволяет определить наличие символов для ввода с клавиатуры до попытки чтения.
Функция |
Краткое описание |
abs |
нахождение абсолютного значения выражения типа int |
acos |
вычисление арккосинуса |
asin |
вычисление арксинуса |
atan |
вычисление арктангенса х |
atan2 |
вычисление арктангенса от у/х |
cabs |
нахождение абсолютного значения комплексного числа |
ceil |
нахождение наименьшего целого, большего или равного х |
_clear87 |
получение значения и инициализация слова состояния сопроцессора и библиотеки арифметики с плавающей точкой |
_control87 |
получение старого значения слова состояния для функций арифметики с плавающей точкой и установка нового состояния |
cos |
вычисление косинуса |
cosh |
вычисление гиперболического косинуса |
exp |
вычисление экспоненты |
fabs |
нахождение абсолютного значения типа double |
floor |
нахождение наибольшего целого, меньшего или равного х |
fmod |
нахождение остатка от деления х/у |
_fpreset |
повторная инициализация пакета плавающей арифметики |
frexp |
разложение х как произведения мантиссы на экспоненту 2 n |
hypot |
вычисление гипотенузы |
labs |
нахождение абсолютного значения типа long |
ldexp |
вычисление х*2 exp |
log |
вычисление натурального логарифма |
log10 |
вычисление логарифма по основанию 10 |
matherr |
управление реакцией на ошибки при выполнении функций математической библиотеки |
modf |
разложение х на дробную и целую часть |
pow |
вычисление х в степени у |
sin |
вычисление синуса |
sinh |
вычисление гиперболического синуса |
sqrt |
нахождение квадратного корня |
_status87 |
получение значения слова состояния с плавающей точкой |
tan |
вычисление тангенса |
tanh |
вычисление гиперболического тангенса |
Система программирования MSC предоставляет дополнительно функции:
Читать дальше