Функції введення–виведення

Консольного термінала та порту

Функції введення–виведення консольного термінала та порту розширюють свої можливості для цього класу пристроїв, безпосередньо використовуючи їх специфіку (відеоадаптер тощо). Функції роботи з портом читають і записують дані побайтно. Деякі додаткові режими встановлюються відповідними функціями для консолі, наприклад введення з ехо-друком чи без, і специфічні для IBM PC. Розглянемо деякі функції:

a cgets() – читання рядка з консолі;

a cprintf() – аналог printf;

a cputs() – запис рядка на консоль;

a getch() – читання символу;

a getche() – читання символу з ехо-друком;

a kbhit() – перевірка натискання клавіші;

a putch() – запис символу на консоль;

a ungetch() – повернення останнього прочитаного символу з консолі для того, щоб він став наступним для читання;

a cscanf() – аналог scanf;

a getpass() – введення з термінала пароля без ехо-друку.

Консольний термінал і порт не можуть бути відкриті чи закриті перед виконанням введення-виведення, тому fopen та fclose не використовуються. Наприклад:

#include <conio.h>

Int main(void)

{

char*password;

password=getpass("Input a password:");

cprintf("The password is: %s\r\n",password);

return 0;

}

Функції введення–виведення нижнього рівня

Функції введення–виведення нижнього рівня не працюють із буферизованими чи форматованими даними. При роботі з файлами вони використовують дескриптори файлів. Основні функції:

a close() – закриття файла;

a creat() – створення;

a dup() – створює другий дескриптор файла;

a dup2() – перепризначує дескриптор файла;

a eof() – перевірка на кінець файла;

a lseek() – позиціювання файлового покажчика;

a open() – відкривання;

a read() – читання;

a sopen() – відкривання файла в режимі розділення;

a tell() – повертає поточну позицію покажчика;

a write() – запис.

Розглянемо програму:

#include <sys\stat.h>

#include <string.h>

#include <fcntl.h>

#include <io.h>

Int main(void)

{

int handle;

char buf[11]="0123456789";

/*змінює режим відкривання файла з текстового на бінарний*/

_fmode=O_BINARY;

/*створює двійковий файл для читання та запису*/

handle=creat("DUMMY.FIL",S_IREAD |S_IWRITE);

/*записує 10 байтів у файл*/

write(handle,buf,strlen(buf));

/*закриває файл*/

close(handle);

return 0;

}

Розглянемо приклади розв'язання задач.

1. Написати програму, яка друкує номер і код введеного символу у вісімковому та шістнадцятковому вигляді.

#include <stdio.h>

Void main(void)

{char c;

printf("введіть символ\n');

scanf("%c',&c);

printf("номер десятковий:');

printf("%d\n',c-'0');

printf("номер вісімковий:');

printf("%o\n',c-'0');

printf("номер шістнадцятковий:');

printf("%x\n',c-'0');

printf("код десятковий:');

printf("%d\n',c);

printf("код вісімковий:');

printf("%o\n',c);

printf("код шістнадцятковий:');

printf("%x\n',c);

}


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: