обивка с функцией sprintf

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

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

надеюсь иметь следующую строку

"000000000000000000000000000324"

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

6 ответов


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

попробуй:

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

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


Это %030d, с буквой типа в конце.