Cтраница 4
Функция strtime помещает символы в массив, указываемый s, в соответствии с управляющей строкой format. Строка format содержит нуль или более спецификаторов преобразования и ординарные многобайтовые символы. Все ординарные символы ( включая нулевой символ ограничения строки) копируются без изменения в массив. Если имеет место копирование между перекрывающимися объектами, то поведение не определено. В массиве размещается не более maxsize символов. Каждый спецификатор преобразования замещается соответствующими символами, как описано в приведенном ниже списке. [46]
Целые значения вводятся со спецификатором преобразования d и i для целых с необязательным знаком и спецификаторами о, u, x и X для целых без знака. Для ввода целых типа short и long используются модификаторы h и 1 соответственно, которые помещаются перед спецификатором преобразования целых значений. [47]
Функция printf может использоваться для вывода на печать заключенной в кавычки строки и значений выражений. При печати целого значения первый аргумент функции printf - управляющая строка, задающая формат вывода, должна содержать спецификатор преобразования % d и, кроме того, может содержать любые другие символы, которые должны быть напечатаны; второй аргумент - выражение, значение которого необходимо напечатать. Если на печать будет выводиться более одного целого числа, управляющая строка формата должна содержать % d для каждого целого, а разделенные запятой аргументы, следующие за управляющей строкой, содержать выражения, значения которых должны быть напечатаны. [48]
Обратите внимание, что операция извлечения из потока становится операцией поразрядного сдвига вправо, если левый параметр является целочисленным типом. Операции передачи и извлечения из потока, в отличие от функций printf и scanf, не требуют форматирующих строк и спецификаторов преобразования для указания на тип входных и выходных данных. В C есть много примеров, подобных этому, когда он автоматически знает, какие типы должны участвовать в операциях. [49]
Спецификатор преобразования п сохраняет количество символов, уже выведенных текущим оператором printf, а соответствующий аргумент является указателем на целую переменную, в которую помещается это значение. Спецификация преобразования % п ничего не печатает. Спецификатор преобразования % просто выводит знак процента. [50]
Для вывода отдельных символов и строк используются соответственно спецификаторы преобразования CHS. Для спецификатора преобразования с требуется аргумент типа char. Для спецификатора преобразования s в качестве аргумента используется указатель на char. Программа, показанная на рис. 9.5, выводит символы и строки со спецификаторами преобразования сиз. [51]
Каждый вызов printf содержит строку управления форматом, в которой описывается формат вывода. Строка управления форматом содержит спецификаторы преобразования, флаги, ширину полей, точность представления и литеральные символы. Вместе с символами процента ( %) они образуют спецификации преобразования. [52]
![]() |
Использование точности представления для вывода информации различного типа. [53] |
Функция printf дает также возможность задать точность представления, с которой будут напечатаны данные. Точность имеет различный смысл для различных типов данных. Если она используется со спецификаторами преобразования целых чисел, то показывает минимальное количество цифр, которое должно быть выведено. Если выводимое значение содержит меньше цифр, чем задано точностью, то перед ним будут напечатаны префиксные нули, так чтобы общее количество цифр стало равно заданной точности. Если точность используется со спецификаторами преобразования значений с плавающей точкой е, Е и f, то точность - это количество цифр, которое будет напечатано после десятичной точки. Для спецификаторов преобразования g и G точность - это максимальное количество значащих цифр, которое будет выведено. Для спецификатора преобразования s точность - это максимальное число символов строки, которое будет напечатано. Программа, приведенная на рис. 9.9, показывает варианты задания точности представления данных в строках управления форматом. Обратите внимание, что если при печати значений с плавающей точкой задана меньшая точность, чем число десятичных разрядов дробной части исходного значения, то это значение округляется. [54]
Целое число - это число вида 776 или - 52, т.е. не содержащее десятичной точки. Целые значения выводятся в одном из нескольких возможных форматов. На рис. 9.1 показаны все спецификаторы преобразования целых чисел. [55]
В данном случае printf имеет два аргумента, Sum is % d n и sum. Первый аргумент - управляющая строка, определяет формат вывода. Он содержит несколько символов, которые будут отображены, и спецификатор преобразования % d, определяющий, что будет напечатано целое число. Второй аргумент задает значение, которое будет напечатано. Отметим, что спецификатор преобразования для целого одинаков как для printf, так и для scanf. Это справедливо для большинства типов данных в С. [56]
Точный размер поля, в котором печатаются данные, задается шириной поля. Если ширина поля больше, чем необходимо для печати данных, то данные обычно выравниваются внутри поля по его правому краю. Целое число, задающее ширину поля, вставляется в спецификацию преобразования между знаком процента ( %) и спецификатором преобразования. Программа, приведенная на рис. 9.8, печатает две группы из пяти чисел, выравнивая по правому краю те из них, которые содержат меньшее количество цифр, чем задано шириной поля. Обратите внимание, что для вывода значений, превышающих текущее значение ширины поля, она автоматически увеличивается, и что знак минус отрицательного значения занимает одну символьную позицию поля. Ширина поля может использоваться со всеми спецификаторами преобразования. [57]
Для вывода отдельных символов и строк используются соответственно спецификаторы преобразования CHS. Для спецификатора преобразования с требуется аргумент типа char. Для спецификатора преобразования s в качестве аргумента используется указатель на char. Программа, показанная на рис. 9.5, выводит символы и строки со спецификаторами преобразования сиз. [58]
В данном случае printf имеет два аргумента, Sum is % d n и sum. Первый аргумент - управляющая строка, определяет формат вывода. Он содержит несколько символов, которые будут отображены, и спецификатор преобразования % d, определяющий, что будет напечатано целое число. Второй аргумент задает значение, которое будет напечатано. Отметим, что спецификатор преобразования для целого одинаков как для printf, так и для scanf. Это справедливо для большинства типов данных в С. [59]
Функция printf дает также возможность задать точность представления, с которой будут напечатаны данные. Точность имеет различный смысл для различных типов данных. Если она используется со спецификаторами преобразования целых чисел, то показывает минимальное количество цифр, которое должно быть выведено. Если выводимое значение содержит меньше цифр, чем задано точностью, то перед ним будут напечатаны префиксные нули, так чтобы общее количество цифр стало равно заданной точности. Если точность используется со спецификаторами преобразования значений с плавающей точкой е, Е и f, то точность - это количество цифр, которое будет напечатано после десятичной точки. Для спецификаторов преобразования g и G точность - это максимальное количество значащих цифр, которое будет выведено. Для спецификатора преобразования s точность - это максимальное число символов строки, которое будет напечатано. Программа, приведенная на рис. 9.9, показывает варианты задания точности представления данных в строках управления форматом. Обратите внимание, что если при печати значений с плавающей точкой задана меньшая точность, чем число десятичных разрядов дробной части исходного значения, то это значение округляется. [60]