[c] 공백이있는 왼쪽 패드 printf
printf를 사용할 때 왼쪽에 공백으로 문자열을 어떻게 채울 수 있습니까?
예를 들어 앞에 40 개의 공백이있는 “Hello”를 인쇄하고 싶습니다.
또한 인쇄하려는 문자열은 여러 줄로 구성됩니다. 각 줄을 별도로 인쇄해야합니까?
편집 : 명확하게 말하면 모든 줄 앞에 정확히 40 개의 공백이 인쇄되기를 원합니다.
답변
“Hello”라는 단어를 40 자 너비의 열에 인쇄하고 공백을 왼쪽에 채우려면 다음을 사용합니다.
char *ptr = "Hello";
printf("%40s\n", ptr);
그러면 35 개의 공백과 “Hello”라는 단어가 표시됩니다. 이것은 열의 너비를 알고 있지만 데이터가 변경 될 때 형식을 지정하는 방법입니다 (할 수있는 한 가지 방법입니다).
정확히 40 개의 공백을 원하고 일부 텍스트를 원하면 40 개의 공백을 상수에 저장하고 인쇄하십시오. 여러 줄을 인쇄해야하는 경우 printf
위와 같은 여러 문을 사용 하거나 루프에서 수행하여 ptr
매번 값을 변경합니다 .
답변
이 함수를 사용하여 출력을 들여 씁니다 (예 : 트리 구조 인쇄). 는 indent
문자열 앞에 공간의 수입니다.
void print_with_indent(int indent, char * string)
{
printf("%*s%s", indent, "", string);
}
답변
int space = 40;
printf("%*s", space, "Hello");
이 명령문은 40 자 행을 예약하고 행 끝에 문자열을 인쇄합니다 (총 행 길이가 40에서 일정하도록 추가 공백 제거). 다음과 같이 문자와 정수에 동일하게 사용할 수 있습니다.
printf("%*d", space, 10);
printf("%*c", space, 'x');
매개 변수를 사용하여 공백을 결정하는이 방법은 가변 개수의 공백이 필요한 경우 유용합니다. 이러한 명령문은 다음과 같이 정수 리터럴에서 계속 작동합니다.
printf("%*d", 10, 10);
printf("%*c", 20, 'x');
printf("%*s", 30, "Hello");
이것이 미래에 저 같은 사람에게 도움이되기를 바랍니다.
답변
문자열 앞에 정확히 40 개의 공백이 필요하면 다음을 수행해야합니다.
printf(" %s\n", myStr );
너무 더럽다면 할 수 있습니다 (하지만 40 개의 공백을 수동으로 입력하는 것보다 느립니다).
printf("%40s%s", "", myStr );
문자열이 40 열에 정렬되도록하려면 (즉, 가장 오른쪽 문자가 40 열에 있도록 최대 39 개의 공백이 있어야 함) 다음을 수행하십시오.
printf("%40s", myStr);
다음을 수행하여 문자열 뒤에 “최대”40 개의 공백을 넣을 수도 있습니다.
printf("%-40s", myStr);