반응형
printf의 가변 크기 패딩
다양한 크기의 패딩을 사용할 수 있는 방법이 있습니까?printf
?
패딩의 크기를 나타내는 정수가 있습니다.
void foo(int paddingSize) {
printf("%...MyText", paddingSize);
}
이것은 출력될 것입니다.### MyText
여기서 paddingSize는 '#' 기호의 수를 결정해야 합니다.
예, 사용하시면*
형식 문자열에서 인수로부터 번호를 가져옵니다.
printf ("%0*d\n", 3, 5);
"005"를 인쇄합니다.
공백이나 0으로만 패드를 넣을 수 있습니다.다른 것으로 패드를 고정하려면 다음과 같은 것을 사용할 수 있습니다.
#include <stdio.h>
#include <string.h>
int main (void) {
char *s = "MyText";
unsigned int sz = 9;
char *pad = "########################################";
printf ("%.*s%s\n", (sz < strlen(s)) ? 0 : sz - strlen(s), pad, s);
}
출력물###MyText
언제sz
9, 또는MyText
언제sz
2입니다(패딩은 없지만 잘림은 없음).다음 항목에 대한 검사를 추가할 수 있습니다.pad
너무 짧습니다.
다음과 같이 쓸 수 있습니다.
void foo(int paddingSize) {
printf ("%*s",paddingSize,"MyText");
}
printf( "%.*s", paddingSize, string );
예를 들어,
const char *string = "12345678901234567890";
printf( "5:%.*s\n", 5, string );
printf( "8:%.*s\n", 8, string );
printf( "25:%.*s\n", 25, string );
표시:
5:12345
8:12345678
25:12345678901234567890
그러나 주의하십시오. 적어도 일부 컴파일러는(이는 일반적인 C 작업일 수도 있음) 항상 원하는 작업을 수행하지는 않습니다.
char *s = "four";
printf("%*.s\n", 5, s); // Note the "."
이것은 5칸을 인쇄합니다.
char *s = "four";
printf("%*s\n", 3, s); // Note no "."
네 개의 문자를 모두 "4"로 인쇄합니다.
better use std::better
#include<iomanip>
#include<iostream>
using namespace std;
cout << setw(9) //set output width
<< setfill('#') // set fill character
<< setiosflags(ios_base::right) //put padding to the left
<< "MyText";
다음을 산출해야 합니다.
###MyText
언급URL : https://stackoverflow.com/questions/4133318/variable-sized-padding-in-printf
반응형
'programing' 카테고리의 다른 글
탐색 드로어에서 메뉴 항목의 텍스트 색상 변경 (0) | 2023.09.17 |
---|---|
XML Android 권한 목록 전체 (0) | 2023.09.17 |
Pandas DataFrame에서 잘못된 값을 없음으로 바꿉니다. (0) | 2023.09.17 |
워드프레스업로드파일크기 (0) | 2023.09.17 |
특정 루트 사용자 및 호스트 이름을 만드는 중 작동하지 않음 (0) | 2023.09.17 |