Ответ 1
"%030d"
- дроид, которого вы ищете
У меня есть фиктивный вопрос. Я хотел бы напечатать целое число в буфере с 0, но я не могу отсортировать его в формате sprintf
.
Я пытаюсь сделать следующее
char buf[31];
int my_val = 324;
sprintf( buf, "%d030", my_val );
надеясь получить следующую строку
"000000000000000000000000000324"
что я делаю неправильно? Это не означает, что пэд с 0 для максимальной ширины 30 символов?
"%030d"
- дроид, которого вы ищете
Заполнение и ширина выполняются перед спецификатором типа:
sprintf( buf, "%030d", my_val );
У вас немного синтаксис; Следующий код создает желаемый результат:
char buf[31];
int my_val = 324;
sprintf( buf, "%030d", (int)my_val );
Из Статья в Википедии на Printf:
[...] printf("%2d", 3) results in " 3", while printf("%02d", 3) results in "03".
Try:
sprintf( buf, "%030d", my_val );
Параметры точности и ширины должны идти между "%" и спецификатором преобразования "d", а не после. На самом деле все флаги. Поэтому, если вы хотите использовать "+" для положительных чисел, используйте "% + d".
Это %030d
, с типом в конце.