Подтвердить что ты не робот

Заполнение с помощью sprintf

У меня есть фиктивный вопрос. Я хотел бы напечатать целое число в буфере с 0, но я не могу отсортировать его в формате sprintf. Я пытаюсь сделать следующее

char buf[31];
int my_val = 324;
sprintf( buf, "%d030", my_val );

надеясь получить следующую строку

"000000000000000000000000000324"

что я делаю неправильно? Это не означает, что пэд с 0 для максимальной ширины 30 символов?

4b9b3361

Ответ 1

"%030d" - дроид, которого вы ищете

Ответ 2

Заполнение и ширина выполняются перед спецификатором типа:

sprintf( buf, "%030d", my_val );

Ответ 3

У вас немного синтаксис; Следующий код создает желаемый результат:

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".

Ответ 4

Try:

sprintf( buf, "%030d", my_val );

Ответ 5

Параметры точности и ширины должны идти между "%" и спецификатором преобразования "d", а не после. На самом деле все флаги. Поэтому, если вы хотите использовать "+" для положительных чисел, используйте "% + d".

Ответ 6

Это %030d, с типом в конце.