Жаманкин Р.А., Астапенко Н.В.
Северо-Казахстанский Государственный Университет им.М.Козыбаева, Республика Казахстан
Изучение средств ввода-вывода в приложениях, написанных на языке С/С++

В  языка С нет средства ввода-вывода. Все операции ввода-вывода выполняются с помощью функций, содержащиеся в библиотеке языка С, поставляемой в составе определенной системы программирования С. В текстовых файлах информация хранится в виде текста, который довольно легко прочесть человеку. Как правило, после чтения такого файла программа, преобразует прочитанные данные в какую-нибудь двоичную форму для более удобной обработки. Язык С является фундаментом С++.

При этом С++ поддерживает всю файловую систему С. Но при использовании С-кода в С++ не обязательно менять процедуру  ввода-вывода при написании программ на С++ более удобно использовать именно систему С++.

В  Си для программ используется  единый интерфейс ввода-вывода , не зависящий от того, к какому определенному  устройству осуществляется доступ. То есть  потоком называется нечто более общее чем само устройство , которое_находиться_между_программой_и_устройством.
В то же время определенное  устройство называется файлом. Наша цель  понять, каким образом происходит связь  потоков и файлов.

Библиотека языка С содержит три уровня ввода-вывода: потоковый ввод-вывод, ввод-вывод нижнего уровня и ввод-вывод для консоли и портов.

Функции  ввода-вывода языка С++, имеют возможность обмена данными с файлами на уровне потока, и дает возможность обрабатывать данные различных размеров и форматов, обеспечивая при этом буферизованный ввод и вывод. Поток  ̶  это файл вместе с предоставляемыми средствами буферизации.
Открывать и закрывать потоки (связывать указатели на потоки с конкретными файлами); вводить и выводить: символ, строку, форматированные данные, порцию_данных_произвольной_длины;_анализировать ошибки потокового ввода-вывода и условие достижения конца потока_(конца_файла); управлять буферизацией_потока_и_размером_буфера;_получать_и_устанавливать указатель (индикатор) текущей позиции.

При выполнении программы автоматически открываются 5 потоков , из которых_основные:_поток_ввода_(stdin);_поток_вывода_(stdоut);_поток вывода сообщений_об_ошибках_(stderr).

По умолчанию стандартному потоку ввода stdin ставится в соответствие клавиатура,_а_потокам_stdоut_и_stderr_соответствует_монитор.

Для работы со стандартными потоками в режиме форматного ввода-вывода определены две функции: printf( )  ̶ форматный вывод; scanf( )  ̶  форматный ввод.

При обращении к функции printf() возможны две формы задания первого параметра:
int_printf_(*форматная_строка,_список_аргументов);
int_printf_(указателъ_на_форматную_строку,_список_аргументов);   

В обоих случаях функция printf() преобразует данные из внутреннего представления в символьный вид в соответствии с форматной строкой и выводит их в выходной поток. Данные, которые преобразуются и выводятся, задаются_как_аргументы_функции_printf().

Возвращаемое_значение_функции_printf()_̶−_число_напечатанных_символов;_а_в_случае_ошибки − отрицательное_число.

Форматная строка ограничена двойными кавычками и может включать произвольный текст, управляющие символы и спецификации преобразования данных. Текст и управляющие символы из форматной строки просто копируются в выходной поток. Форматная строка обычно размещается в списке фактических параметров функции, что соответствует первому способу вызова функции printf(). Второй способ предполагает, что первый фактический параметр  ̶  это указатель типа char *, a сама форматная строка определена в программе как обычная строковая константа или переменная.

В список аргументов функции printf() включают выражения, значения которых должны быть выведены из программы. Частные случаи этих выражений  −_переменные_и_константы.

Форматный ввод из входного потока осуществляется функцией scanf().

Прототип_функции_scanf(_)_имеет_вид:

int_scanf(cоnst_char_*fоrmat,_…);

Функция scanf() читает последовательности кодов символов (байты) из входного потока и интерпретирует их в соответствии с форматной  строкой как целые числа, вещественные числа, одиночные символы, строки.

В данной работе были рассмотрены особенности операций ввода-вывода в языке программирования С/С++, в которых есть много общего. Рассмотрены понятия «функции» и «потока», их виды и особенности функционирования в языке программирования. Более подробно были рассмотрены потоковый ввод-вывод_символов,_его_особенности_работы.

 

Литература:

1.   Пышкин Е. В.  «Основные концепции и механизмы объектно-ориентированного_программирования._2005

2.   Медведев В. И.  Особенности объектно-ориентированного программирования на_C++/CLI,_C#_и_Java.2010г.

3.   Бьерн Страуструп   Язык программирования С++ , 2011г