Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Программирование на С.docx
Скачиваний:
2
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

Функции форматного ввода и вывода данных printf и scanf.

Называются они так, потому, что выводят и считывают данные в соответствии со строкой формата. Про это я уже говорил в конце второго урока. Основной принцип их работы разбирался там же. Сегодня мы рассмотрим специальный символы (начинаются со значка %) которые существуют, их еще называют спецификаторами формата. А так же поговорим о модификаторах формата, это такие значки, которые позволят задавать число знаков после запятой, или, например, по какому краю выравнивать символы.

Спецификаторы формата:

  • %d или % i для целых чисел

  • %c для отдельный символ.

  • %f для вещественных чисел ( с точкой) Выводятся в привычном виде. Например, 23.40000 Количество знаков после запятой задается точностью. По умолчанию точность равна 6.

  • %e для вещественных чисел. Выводится в научном виде например, 23.4 будет выведено как 2.340000e+001. Это означает что число 2.34 надо умножить на 10 в степени +1. Тут тоже количество знаков после запятой задается точностью. По умолчанию точность равна 6.

  • % если никаких аргументов нет, то не преобразуются и печатается просто %.

Для примера рассмотрим простейшую программу.

Листинг 3.5.

#include <stdio.h>

int main(){

int a=25;

float b=23.4;

double c=217.876;

char d='a';

printf("Dva chelih %i %d \n",a,a);

printf("Odin simvol %c \n",d);

printf("Vewestvennoe obychnoe %f \n",b);

printf("vewestvennoe v nauchnom vide %e \n",b);

printf("Vewestvennoe obychnoe %f \n",c);

printf("vewestvennoe v nauchnom vide %e \n",c);

return(0);

}

Вот результат её работы.

Программа демонстрирующая работу различных спецификаторов формата.

Модификаторы формата

пишутся после знака % перед спецификатором формата. Примеры:

%-8.5f %4.6f %-2d

Итак, пойдем по порядку. После % может стоять символ – это значит надо выровнять число по левому краю, если минуса нет, то значение выравнивается по правому краю. Дальше идет цифра, означающая ширину поля на экране предназначенного для вывода этой переменной. Если указанного количества не хватит, то оно будет само расширено. Дальше точка, это просто разделитель первой и второй цифры. Вторая цифра применяется для вещественных чисел, она указывает, количество знаков после запятой.

Рассмотрим на примерах:

Листинг 3.6

#include <stdio.h>

int main()

{

int a=777;

//никаких модификаторов нет, выведет используя минимальную ширину поля

printf("|%i|\n", a);

//ширина 8 позиций, выравнивание по левому краю

printf("|%-8i|\n", a);

//ширина 8 позиций, выравнивание по правому краю

printf("|%8i|\n", a);

//число позиций 2, но в числе 777 больше двух цифр, поэтомк расширяется до минимального значения

printf("|%2i|\n", a);

double b=150.37;

//никаких модификаторов нет, выведет используя минимальную ширину поля и стандартную точность 6 знаков

printf("|%f|\n", b);

//ширина 8 позиций, выравнивание по левому краю, 3 знака после запятой

printf("|%-8.3f|\n", b);

//ширина 8 позиций, 2 знака после запятой, выравнивание по правому краю

printf("|%8.2f|\n", b);

//число позиций 4, 3 знака после запятой, но этого мало и поэтому расширяется до минимального значения ширина

printf("|%4.3f|\n", b);

return(0);

}

Результат работы:

Программа иллюстрирующая работу модификаторов формата для целых и вещественных чисел.