반응형
sprintf가 있는 패딩
바보 같은 질문이 있습니다.0으로 정수를 버퍼 패딩에 인쇄하고 싶지만 정리할 수 없습니다.sprintf
포맷. 나는 다음을 시도하고 있습니다.
char buf[31];
int my_val = 324;
sprintf( buf, "%d030", my_val );
다음과 같은 끈을 갖기를 바랍니다.
"000000000000000000000000000324"
내가 뭘 잘못하고 있는 거지?최대 너비가 30자인 경우 0인 패드를 의미하지 않습니까?
"%030d"
당신이 찾고 있는 드로이드는?
구문을 약간 잘못 이해했습니다.다음 코드는 원하는 출력을 생성합니다.
char buf[31];
int my_val = 324;
sprintf( buf, "%030d", (int)my_val );
[...] printf("%2d", 3) results in " 3", while printf("%02d", 3) results in "03".
패딩 및 폭은 형식 지정자 앞에 옵니다.
sprintf( buf, "%030d", my_val );
시도:
sprintf( buf, "%030d", my_val );
정밀도 및 폭 모수는 다음이 아니라 '%'와 변환 지정자 'd' 사이에 있어야 합니다.사실 모든 국기가 그렇습니다.따라서 양수 앞에 '+'를 붙이려면 '%+d'를 사용합니다.
그건…%030d
타이프라이터를 끝에 붙입니다.
느린 라이브러리 호출이 필요 없는 상당히 효과적인 버전:
#include <stdio.h>
void uint_tostr (unsigned int n, size_t buf_size, char dst[buf_size])
{
const size_t str_size = buf_size-1;
for(size_t i=0; i<str_size; i++)
{
size_t index = str_size - i - 1;
dst[index] = n%10 + '0';
n/=10;
}
dst[str_size] = '\0';
}
int main (void)
{
unsigned int n = 1234;
char str[6+1];
uint_tostr(n, 6+1, str);
puts(str);
}
이는 보다 수백 배 더 빠르지만 추가로 최적화할 수 있습니다.sprintf
그대로
언급URL : https://stackoverflow.com/questions/6116994/padding-with-sprintf
반응형
'your programing' 카테고리의 다른 글
서명된 정수 산술 오버플로를 정의되지 않은 상태로 유지하는 것을 정당화할 수 있는 의미 있는 통계 데이터가 있습니까? (0) | 2023.06.11 |
---|---|
Python 패키지가 설치되어 있는지 확인합니다. (0) | 2023.06.11 |
특정 열에 특정 문자열이 포함된 판다 데이터 프레임에서 행을 삭제하는 방법은 무엇입니까? (0) | 2023.06.11 |
///의 의미는 무엇입니까? (0) | 2023.06.11 |
R - 자동 장착 Excel 열 너비 (0) | 2023.06.11 |