Ввод вывод с использованием стандартной библиотеки ввода-вывода stdio.H
Все возможности организации ввода-вывода СИ реализованы в библиотечных функциях стандартной библиотеки stdio.h.
Для организации вывода используется функция
printf(форматная_строка,список_аргументов);
Форматная строка ограничивается кавычками «”» и может включать произвольный текст, управляющие символы и спецификации преобразования данных.
Список аргументов может отсутствовать.
#include "stdafx.h"
#include <stdio.h>
void main()
{
printf("\nhello!\n");
}
Препроцессорная директива #include <stdio.h> подключает стандартную библиотеку ввода-вывода. «\n» – перевод строки (управляющий символ).
При организации вывода данных на экран используются спецификации преобразования, которые имеют следующий обобщённый вид:
%флажки ширина_поля.точность модификатор спецификатор
Обязательными являются «%» и спецификатор.
Таблица 5 – Назначение флагов
Флаг | Назначение |
- | Выравнивание результата по левому краю поля. |
+ | Результат всегда выводится с указанием знака «+» или «-». |
Пробел | Если значение не отрицательное, то вместо плюса выводится пробел, для отрицательных значений выводится «-». |
# | Аргументы могут быть преобразованы с использованием альтернативной формы |
ширина_поля – целое положительное число, определяющее количество знакомест для вывода значения.
точность – целое положительное число, определяющее количество цифр после десятичной запятой для вывода значения с плавающей точкой.
Возможные модификаторы представлены в таблице 6.
Таблица 6 – Назначение модификаторов
Модификатор | Назначение |
N | Для близкого указателя |
F | Для дальнего указателя |
h | Для значения short int |
l | Для значения long |
L | Для значения long double |
Спецификаторы определяют тип выводимого значения и форму вывода.
Таблица 7 – Назначение спецификаторов
Спецификатор | Тип аргумента | Назначение |
d | Целого типа | Для целых десятичных чисел (int) |
i | Целого типа | Для целых десятичных чисел (int) |
o | Целого типа | Для беззнаковых восьмеричных целых |
u | Целого типа | Для беззнаковых десятичных целых |
x | Целого типа | Для беззнаковых шестнадцатеричных целых (a,b,c,d,e,f) |
X | Целого типа | Для беззнаковых шестнадцатеричных целых (A,B,C,D,E,F) |
Спецификатор | Тип аргумента | Назначение |
f | вещественный | Знаковое вещественное число в формате [+/-]ddd.dddd |
e | вещественный | Знаковое вещественное число в формате [+/-]d.dddd или в экспоненциальной форме |
g | вещественный | Знаковое вещественное число в формате или f, или e (в зависимости от выводимого значения) |
E | вещественный | Такое же, как и e |
G | вещественный | Такое же, как и g |
s | строковый | ввод-вывод строковых данных |
c | символьный | ввод-вывод символов |
Например:
Printf(“|n summa=%f”,summa);
На экране будет выведено:
Summa=2102.3
После выполнения операторов:
float c=48.3, e=16.33;
int k=-83;
printf(“\nc=%f\tk=%d\te=%e”,c,k,e);
на экране будет выведено
c=48.299999 k=-83 e=1.63300e+01
Для тех же переменных:
printf(“\nc=%5.2f\tk=%5d\te=%8.2f\te=%11.4e”,c,k,e,e);
на экране будет выведено
c=48.30 k= -83 e=16.33 e= 1.6330e+01
В состав строки вывода могут входить управляющие последовательности:
‘\n’ – перевод строки;
‘\t’ – горизонтальная табуляция;
‘\r’ – возврат каретки к началу строки;
‘\\’ – обратная косая черта \;
‘\’’ – апостроф ‘;
‘\0’ – нулевой символ;
‘\a’ – сигнал-звонок;
‘\b’ – возврат на одну позицию;
‘\f’ – перевод строки;
‘\v’ – вертикальная табуляция;
‘\?’ – знак вопроса.
Для организации ввода данных с клавиатуры используется функция
scanf(форматная_строка, список_аргументов);
Эта функция выполняет чтение значений вводимых с клавиатуры и присваивает их последовательно аргументам. Форматная строка представляет собой последовательность спецификаций, управляющих преобразованием вводимых значений.
%*ширина_поля модификатор спецификатор
‘*’ в настоящее время не используется;
Ширина_поля – целое положительное число, позволяющее определить, какое количество байтов из входного потока соответствует вводимому значению.
модификатор и спецификатор – аналогичны функции printf().
Аргументами функции ввода могут быть адреса переменных, которым будут присвоены вводимые значения. Они задаются при помощи операции взятия адреса “&имя_переменной”
Например:
scanf(“%d%f%f”,&n,&z,&x);
При организации ввода-вывода данных используются также функции, описанные в стандартной библиотеке ввода-вывода(<stdio.h>):
puts(const char* Строка);Выводит на экран строку символов и переводит курсор в начало следующей строки экрана. В качестве параметра функции можно использовать строковую константу или строковую переменную.
char *gets(char* s);Вводит с клавиатуры строку символов. Вводимая строка может содержать пробелы.
int putch(int с);Выводит на экран символ.
int getch(void);Возвращает код символа нажатой клавиши. Если нажата служебная клавиша, то функция getch возвращает 0. В этом случае, для того, чтобы определить, какая служебная клавиша нажата, нужно обратиться к функции getch еще раз. Замечание Функция getch не выводит на экран символ, соответствующий нажатой клавише.
cputs(const char* Строка); Выводит на экран строку.
Математические функции
Для выполнения математических вычислений в стандартной математической библиотеке <math.h> описаны следующие функции:
int abs (int к) ; double fabs(double x); Возвращает целое (abs) или дробное (fabs) абсолютное значение аргумента, в качестве которого можно использовать выражение соответствующего типа.
Double acos (double x);
Double asin (double x);
Double atan (double x);