Наряду с потоковым вводом-выводом, в консольных приложениях применяются и функции ввода-вывода языка Си. Их декларации приведены в заголовочных файлах stdio.h и conio.h .
Для вывода информации на экран монитора (дисплей) в языке Си служат функции printf() и puts().
Формат функции форматного вывода на экран:
printf( управляющая строка , список объектов вывода);
В управляющей строке, заключенной в кавычки, записывают: текст, выводимый на экран ; спецификаторы форматов, указывающие компилятору способ вывода объектов (каждый спецификатор формата начинается с символа '%').
В списке объектов вывода указываются выводимые на экран переменные, константы или выражения, разделенные запятыми. Список объектов вывода может отсутствовать.
Каждый из спецификаторов формата соответствует своему объекту из списка вывода, в порядке следования. Поэтому количество и порядок следования спецификаторов форматов должны совпадать с количеством и порядком следования выводимых объектов. Функция printf выполняет вывод данных в соответствии с указанными форматами. Весь остальной (кроме спецификаторов форматов) текст управляющей строки выводится на экран без изменений.
Имеется большое количество различных спецификаторов формата. Основные из них:
%d (%i)– десятичное целое число;
%f– вещественное число, запись с фиксированной точкой;
%е– вещественное число, экспоненциальная запись;
%g– вещественное число, запись с фиксированной точкой либо экспоненциальная запись, в зависимости от значения величины;
%o– восьмеричное число без знака;
%x– шестнадцатеричное целое число без знака (малые буквы a-f);
%X– шестнадцатеричное целое число без знака (большие буквы A-F);
%c– один символ;
%s– строка символов (массив char).
Для "длинных" типов чисел добавляется символ l : %ld – long (длинное целое), %lf – double (вещественное число с удвоенной точностью). Для еще более длинных типов чисел вместо l добавляется L : %Ld - long long, %Lg - long double в соответствии с форматом %g.
Если нужно напечатать сам символ %, то его нужно указать 2 раза:
printf ("Только %d%% предприятий не работало. n",5);
Получим: Только 5% предприятий не работало.
Пример:
int number = 5; float but = 255; int cost = 11000;
printf(" %d студентов съели %f бутербродов. n", number, but);
printf(" Значение числа pi равно %f. n", M_PI);
printf(" Стоимость этой вещи %d %s. n", cost, "Руб.");
. . .
В спецификаторах формата функции printf после символа % можно указывать число, задающее минимальную ширину поля вывода, например, %5d – для целых, %4.2f – для вещественных (означает поле общей шириной 4 символа, две цифры после запятой). Недостающие позиции будут слева заполнены пробелами (если нужно заполнить их нулями, перед шириной поля надо поставить символ '0' , например: %05d ). Если, наоборот, указанных позиций не хватает для вывода целой части числа, то происходит автоматическое расширение поля до нужной ширины.
Если после «%» указан знак «минус», то выводимое значение будет выравниваться по левой (а не по правой) позиции поля вывода заданной ширины, например: % – 10d.
Использование функции printf для преобразования данных:
1) printf("%d", 336.65); получим: 336;
2) printf("%o", 336); получим: 520, т.е. 5*8**2+2*8+0*1 = 336;
3) printf("%x", 335); получим: 14f (шестнадцатеричное).
Можно использовать функцию printf для нахождения кода ASCII некоторого символа:
printf (" %c – %dn", 'a', 'a');
получим десятичный код ASCII символа а: a – 65 .
Функция puts(строка); выводит на экран дисплея строку символов, автоматически добавляя к ней символ перехода на начало новой строки (n).
Аналогом такой функции будет: printf(“строкаn”);