русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Организация ввода-вывода информации

Прежде чем программы смогут работать с данными, вам придется предусмотреть способ, посредством которого они будут попадать в компьютер. Поэтому ясно, что программам на С требуются функции, позволяющие им воспринимать данные и отображать результаты в доступной для чтения форме. В совокупности такие функции называются функциями ввода-вывода или обозначаются аббревиатурой I/O (Input/Output).

Одной из положительных характеристик языка С является его переносимость. Это означает, что одна и та же функция ввода-вывода должна подобно работать в условиях эксплуатации различного оборудования. Фактически у любого современного компьютера имеется клавиатура и монитор. И то, и другое устройство предназначено для символьной обработки – мы набираем символы на клавиатуре и видим их отображение на экране монитора. Следовательно, представляется разумным иметь в С такие элементарные функции ввода-вывода, которые ограничиваются работой с тем, что пользователь может ввести: такого рода ввод-вывод называется символьно-ориентированным. Конечно, такой ввод-вывод обладает существенными ограничениями, однако он эффективен и переносим.

Для поддержки символьно-ориентированного ввода-вывода все реализации языка С включают в себя функции printf (форматированный вывод) и scanf (форматированный ввод). Термин форматированный употреблен здесь в том смысле, что указанные функции обеспечивают заданные автоматические преобразования форматов данных. Для использования функций printf и scanf в программу необходимо вставить команду препроцессора #include <stdio.h>.Функции printf и scanfимеют переменное число аргументов. Числа и типы аргументов должны соответствовать спецификациям преобразования в форматной (символьной) строке.

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

Список аргументов функции printf определяется следующим образом:

<format> [, argument1]...

Здесь format - это управляющая строка (строка символов), задающая требуемые при вводе форматные преобразования.

В общем случае format описывается строкой со следующей структуры:

%[flags] [width] [.precision] [{h | l | I64 | L}]type

Прежде чем рассматривать указанные элементы формата заметим, что обязательными являются только % и type.

type (в русскоязычной литературе – спецификатор) может принимать значения в соответствии с таблицей:

type Результат Образец
%c Одиночный символ ‘?’
%d Десятичное целое число
%e Число с плавающей точкой в экспоненциальном представлении 3.500e+000
%E Число с плавающей точкой в экспоненциальном представлении 3.500E+000
%f Число с плавающей точкой в десятичном представлении 3.5
%g Используют %f или %e в зависимости от значения. %e используется, если показатель меньше чем –4 или больше либо равен заданной точности.  
%G То же, только для %E.  
%i Десятичное целое число со знаком
%o Восьмеричное целое число без знака
%p Указатель (адрес памяти) 0064FDF4
%s Строка символов “Str”
%u Десятичное целое число без знака
%x Шестнадцатеричное целое число без знака (с цифрами abcdef) 1f
%X Шестнадцатеричное целое число без знака (с цифрами ABCDEF) 1F
%% Печать знака процента  

Каждая реализация языка может расширять предложенный в таблице список. Форматы %E, %G, %i, %p и %X встречаются не во всех реализациях языка.

Все прочие элементы строки формата называются модификаторами и служат для уточнения формы представления информации при выводе.

В следующей таблице представлены варианты элемента flags.

Флаг Значение Образец
Определяет выравнивание по левому краю %–20s
+ Печатать знак %+d
Пробел Положительные значения печатаются без знака, но с пробелом, отрицательные со знаком «минус» % 6.2f
Для числовых форм заполняет поле по ширине нулями вместо пробелов. Этот флаг игнорируется, если указан флаг «–» или указана точность для целочисленной формы %010d, %08.3f
# Вывод первого 0 для восьмеричных, 0x или 0X для 16-ых. Для всех форм с плавающей точкой гарантируется вывод символа десятичной точки. Для форм %g %G предотвращает удаление заключительных нулей. %#o, %#8.0f, %+#10.3E

Модификатор формата width (ширина) представляется целым положительным числом и служит для указания минимального количества выводимых символов. Если количество символов выводимого значения меньше width, поле будет дополняться символами в соответствии с указанными флагами. Значение width никогда не ограничивает выводимое значение.

Модификатор формата .precision (точность) используется для чисел с плавающей точкой. Точность представляется неотрицательным целым числом, следующим за точкой и задает либо количество символов, которое должно быть выведено, либо количество цифр в дробной части числа, либо количество значащих цифр.

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

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

В целом функция вода scanf очень похожа на функцию printf. Она также использует строку, задающую необходимые форматные преобразования. Главное различие этих функций заключается в списке параметров. Функция printf использует имена переменных, константы и выражения. Функция scanf в качестве параметров использует только указатели на переменные, т.е. адреса заполняемых переменных.

- для ввода значения для одного из основных типов переменной, перед именем переменной ставьте символ &;

- для ввода строки в символьный массив, знак & не ставится.

Информация, принимаемая функцией scanf, поступает в виде потока символов, набираемых на клавиатуре. Среди них могут быть и служебные символы, такие как табуляция, пробел, символ перевода строки и т. п. Эти символы позволяют разделить поток ввода на отдельные поля. Это соответствует последовательным применениям спецификаций преобразований к последовательным полям, с пропуском служебных символов между ними. Единственное исключение составляет спецификатор преобразования %c, который читает каждый следующий символ, даже если этот символ является служебным.

Просмотров: 712


Вернуться в оглавление



Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.