
- •1. Информатика как наука.
- •2. Информация в материальном мире. Свойства информации.
- •3. Представление информации в эвм.
- •4. Системы счисления. Перевод чисел в различные системы счисления.
- •6. Представление целых положительных и отрицательных чисел
- •7. Истории развития вычислительной техники
- •8. Обшая структура и принцип работы эвм
- •9. Классификация эвм
- •10. Микропроцессор. Принцип работы.
- •11. Память. Виды памяти.
- •12. Устройства ввода-вывода данных.
- •13. Операционные системы. Общие понятия.
- •14. Классификация операционных систем.
- •15. Основы работы с операционной системой Windows.
- •16. Работа с файлами и папками в os Windows. Общие положения.
- •17. Операционная система Unix. Общие понятия.
- •Часть 1 Работа в среде
- •18. Текстовый редактор Word. Набор, редактирование и форматирование текста
- •19. Возможности и технология работы в табличном процессоре мs Ехсеl.
- •20. Виды информационно-вычислительных сетей.
- •21. Техническое обеспечение информационно-вычислительных сетей.
- •22. Интернет: теоретические основы.
- •23. Принципы работы службы www
- •24. Принципы работы службы dns.
- •25. Принципы работы службы fтр.
- •26. Принципы работы службы e-mail
- •27. Языки программирования.
- •28. Компилятор и интерпретатор.
- •29. Этапы создания программы на языке с.
- •30. Структура программы на языке с.
- •Дополнительный пример
- •31. Среда программирования и алгоритмы.
- •32. Создание блок-схемы алгоритма решения задачи.
- •34. Целочисленные типы данных языка с.
- •35. Вещественные типы данных языка с.
- •36. Математические функции
- •37. Ввод/Вывод в с. Стандартные потоки
- •38. Использование функции scanf(). Спецификаторы преобразования. Модификаторы.
- •39. Использование функции printf(). Спецификаторы преобразования. Модификаторы.
- •40. Печать с заданием ширины поля и точности представления.
- •41. Сокращенный оператор ветвления if... Составной оператор.
- •42. Полный оператор ветвления if... Else. Составной оператор.
- •43. Оператор выбора switch() Оператор bгеак.
- •44. Бинарные логические операции. Операции сдвига.
- •45. Бинарные логические операции. Применение, масок. Включение и отключение битов.
- •46. Операторы цикла while … Операторы break, continue.
- •47. Операторы цикла for … Операторы break, continue.
- •48. Операторы цикла do … while Операторы break, continue
- •49. Вложенные циклы.
- •50. Одномерные массивы. Объявление. Инициализация.
- •51. Ввод-вывод одномерных массивов.
- •52. Поиск наибольшего и наименьшего значения массива и их индексов в одномерном массиве.
- •53. Двумерные массивы. Объявление. Инициализация.
- •54. Ввод-вывод двумерных массивов.
- •60. Односимвольные функции ввода/вывода: getchar() и putchar(). Перенаправление ввода/вывода.
- •61. Символы. Библиотека символьных функций и ctype.H.
- •62. Строки. Предоставление строки в памяти.
- •63. Ввод-вывод строк с использованием функций puts(), fputs(), printf(), gets(), fgets(), scanf().
- •64. Обработка строк. Библиотека строковых функций string.H.
39. Использование функции printf(). Спецификаторы преобразования. Модификаторы.
Функция printf переводит внутренние значения в текст.
int printf(char *format, arg1, arg2, ...)
В предыдущих главах мы использовали printf неформально. Здесь мы покажем наиболее типичные случаи применения этой функции: полное ее описание дано в приложении B.
Функция printf преобразует, форматирует и печатает свои аргументы в стандартном выводе под управлением формата. Возвращает она количество напечатанных символов.
Форматная строка содержит два вида объектов: обычные символы, которые напрямую копируются в выходной поток, и спецификации преобразования, каждая из которых вызывает преобразование и печать очередного аргумента printf. Любая спецификация преобразования начинается знаком % и заканчивается символом-спецификатором. Между % и символом-спецификатором могут быть расположены (в указанном ниже порядке) следующие элементы:
Знак минус, предписывающий выравнивать преобразованный аргумент по левому краю поля.
Число, специфицирующее минимальную ширину поля. Преобразованный аргумент будет занимать поле по крайней мере указанной ширины. При необходимости лишние позиции слева (или справа при левостороннем расположении) будут заполнены пробелами.
Точка, отделяющая ширину поля от величины, устанавливающей точность.
Число (точность), специфицирующее максимальное количество печатаемых символов в строке, или количество цифр после десятичной точки - для чисел с плавающей запятой, или минимальное количество цифр - для целого.
Буква h, если печатаемое целое должно рассматриваться как short, или l (латинская буква ell), если целое должно рассматриваться как long.
Символы-спецификаторы перечислены в таблице 7.1. Если за % не помещен символ- спецификатор, поведение функции printf будет не определено. Ширину и точность можно специфицировать с помощью *; значение ширины (или точности) в этом случае берется из следующего аргумента (который должен быть типа int). Например, чтобы напечатать не более max символов из строки s, годится следующая запись:
printf("%.*s", max, s);
Таблица 7.1 Основные преобразования printf
Символ |
Тип аргумента; вид печати |
d, i |
int; десятичное целое |
o |
unsigned int; беззнаковое восьмеричное (octal) целое (без нуля слева) |
x, X |
unsigned int; беззнаковое шестнадцатеричное целое (без 0x или 0X слева), для 10...15 используются abcdef или ABCDEF |
u |
unsigned int; беззнаковое десятичное целое |
c |
int; одиночный символ |
s |
char *; печатает символы, расположенные до знака \0, или в количестве, заданном точностью |
f |
double; [-]m.dddddd, где количество цифр d задается точностью (по умолчанию равно 6) |
e, E |
double; [-]m.dddddde±xx или [-]m.ddddddE±xx, где количество цифр d задается точностью (по умолчанию равно 6) |
g, G |
double; использует %e или %E, если порядок меньше, чем -4, или больше или равен точности; в противном случае использует %f. Завершающие нули и завершающая десятичная точка не печатаются |
p |
void *; указатель (представление зависит от реализации) |
% |
Аргумент не преобразуется; печатается знак % |
Большая часть форматных преобразований была продемонстрирована в предыдущих главах. Исключение составляет задание точности для строк. Далее приводится перечень спецификаций и показывается их влияние на печать строки "hello, world", состоящей из 12 символов. Поле специально обрамлено двоеточиями, чтобы была видна его протяженность.
:%s: :hello, world:
:%10s :hello, world:
:%.10s: :hello, wor:
:%-10s: :hello, world:
:%.15s: :hello, world:
:%-15s: :hello, world :
:%15.10s: : hello, wor:
:%-15.10s: :hello, wor :
Предостережение: функция printf использует свой первый аргумент, чтобы определить, сколько еще ожидается аргументов и какого они будут типа. Вы не получите правильного результата, если аргументов будет не хватать или они будут принадлежать не тому типу. Вы должны также понимать разницу в следующих двух обращениях:
printf(s); /* НЕВЕРНО, если в s есть % */
printf("%s", s); /* ВЕРНО всегда */
Функция sprintf выполняет те же преобразования, что и printf, но вывод запоминает в строке
int sprintf(char *string, char *format, arg1, arg2, ...)
Эта функция форматирует arg1, arg2 и т. д. в соответствии с информацией, заданной аргументом format, как мы описывали ранее, но результат помещает не в стандартный вывод, а в string. Заметим, что строка string должна быть достаточно большой, чтобы в ней поместился результат.