Формат представляет собой строку символов, состоящую из нуля или более директив. Каждая директива состоит из одного из следующих: один или несколько символов пробела (<space>
, <tab>
, <newline>
, <vertical-tab>
или <form-feed>
); обычный символ (ни '%
', ни символ пробела); или спецификация преобразования. Каждая спецификация преобразования вводится символом '%
' [CX] ⌦ или последовательностью символов "% n $", ⌫ после чего в последовательности появляется следующее:
...
Директива, которая является спецификацией преобразования, определяет набор соответствующих входных последовательностей, как описано ниже для каждого символа преобразования. Спецификация преобразования должна быть выполнена в следующих шагах.
Входные пробельные символы (как указано isspace
) должны быть пропущены, если спецификация преобразования не включает спецификатор преобразования [
, c
, C
или n
.
Элемент должен быть прочитан из ввода, если спецификация преобразования не включает спецификатор преобразования n
. Элемент ввода должен быть определен как самая длинная последовательность входных байтов (вплоть до любой заданной максимальной ширины поля, которая может измеряться в символах или байтах в зависимости от спецификатора преобразования), которая является начальной подпоследовательностью совпадающей последовательности. Первый байт, если он есть, после элемента ввода должен оставаться непрочитанным. Если длина элемента ввода равна 0, выполнение спецификации преобразования завершится сбоем; это условие является ошибкой сопоставления, если только конец файла, ошибка кодирования или ошибка чтения не предотвратили ввод из потока, и в этом случае это сбой ввода.