Компьютерные курсы в Новосибирске
АБВ Компьютерные курсы
(383) 380-18-55

    Компьютер для дома

    Компьютер для офиса

    Excel для аналитиков

    Создание простых сайтов

    Создание сложных сайтов

    Программирование С++

Ввод/вывод данных в языке Си. Функции printf/scanf

Для обмена данными между компьютером и пользователем в стандартной библиотеке языка Си есть специальные функции – это printf и scanf. Первая выводит данные в стандартный консольный вывод, вторая получает данные и записывает их в переменные. Так же есть функции putc и getc, которые проделывают это с одним символом.

Функции – это подпрограммы в Си, выполняющие определённые операции. Есть функции в стандартной библиотеке, но можно добавить в программу свои. Функция может возвращать значение, которое может быть использовано в программе. Например, функция printf возвращает количество выведенных символов, а scanf – количество распознанных элементов. Функции принимают аргументы, которые являются параметрами для выполнения. Аргументы перечисляются через запятую.

В функции printf первым аргументом является выводимая строка, в которую вставляются, а вторым и последующими аргументами – эти самые переменные. Спецификаторы формата в первом аргументе определяют типы переменных и их форматирование. 1-му спецификатору формата соответствует 2-й аргумент, второму – 3-ий, и т.д.

Общий вид спецификаций формата:
%[флаг][ширина][.точность][h|l|L]тип

Так как знак процента является управляющим, то чтобы вывезти его, нужно прописать его дважды.

Подробнее форматирование рассмотрим позже, данные могут выводиться и при отсутствии элементов, условно поставленных в квадратные скобки. Поэтому минимальный вид спецификаторов формата таков:
%тип

Рассмотрим некоторые их типы:
c Символ
s Строка символов
d, i Целое десятичное со знаком
o Целое восьмеричное
u Целое десятичное без знака
x, X Целое шестнадцатеричное
f Дробное число в фиксированном формате
e, E Дробное число в научном формате
g, G Дробное число в научном или фиксированном формате
p Указатель (в шестнадцатеричном виде)

Пример спецификаторов формата:
%d – целое число
%s - строка

Аналогичные спецификаторы применяются и в scanf, первый аргумент определяет вид поступающих данных, только второй и последующий аргументы функции – указатели на переменные. Это необходимо для того, чтобы функция получила доступ к самим данным, а не к копии переменной, как это делается в случае передачи переменной в функцию. Чтобы получить указатель на переменную, необходимо добавить перед ней знак &.

Итак, перейдём к практике. Рассмотрим следующий пример:

// так обозначаются комментарии, они не учитываются компилятором
#include

int main() // главная функция
{
int i;
printf("Enter integer number: ", i);
scanf("%d", &i); // получение числа из стандартного ввода в переменную i
i = i*i+3; // действия над переменной
printf("Result: %d\n", i); // вывод результата, \n означает перевод строки
return 0;
}
Данная программа получает число, возводит его в квадрат и прибавляет 3. Проверим работу программы. При запуске она выдаёт запрос: «Enter integer number:». Введите 3. Вывод программы должен быть таким: «Result: 12». Можно проверить работу программы и на других числах.

Теперь рассмотри форматирование выводимых данных. Создайте новую программу и объявите переменную x типа float и значением с 2 знаками после запятой (например, 2.19). Мы будем применять различное форматирование при выводе этой переменной. При присваивании дробного числа использовать десятичную точку (.), а не запятую (,).

Рассмотрим некоторые примеры форматирования вывода функции printf.

Например, строка
printf("Result: %.1f\n", x);
выводит число x с точностью 1 знак после запятой.
printf("Result: %10.3f\n", x);
точность – 3, количество символов, отведённых на число – 10.

Итак, мы рассмотрели функции ввода/вывода printf и scanf, а так же форматирование выведенных данных.

Страницы:     77  78  79  80  81  82  83  84  85