fprintf()
семейство функций имеет 5 символов флага '-'
, '+'
, ' '
, '#'
, '0'
.
Что такое указанное поведение, если оно есть, когда флаг повторяется?
#include <stdio.h>
int main(void) {
printf("% d\n", 12); // 12
printf("%00d\n", 34); // 34
printf("%++d\n", 56); // +56
printf("%00*d\n", 5, 78); // 00078
return 0;
}
С моим gcc "i686-pc-cygwin/4.9.2" Я получаю "предупреждение: повторяется флаг в формате [-Wformat =]", поэтому я предполагаю, что это правильное поведение → предупредить пользователя и разрешить повторный флаг.
Мне еще предстоит найти руководство по спецификации C99/C11 для этой угловой проблемы, обнаруженной при попытке написать парсер формата.
Если повторение разрешено, следующий код в порядке. Если повторение не разрешено, 2-й 0
является шириной. Тогда спецификатор имеет 2 ширины 0
и *
, что является еще одной проблемой.
// -------v
printf("%00*d\n", 5, 78); // 00078