출력에서 동일한 길이를 얻기 위해 printf()를 사용하여 문자열을 포맷하는 방법
두 가지 기능이 있습니다. 하나는 다음과 같은 메시지를 생성합니다.Starting initialization...
반환 코드와 출력을 체크하는 다른 장치도 있습니다."Ok"
,"Warning"
또는"Error"
다만, 생성되는 출력의 길이는 다릅니다.
Starting initialization...Ok.
Checking init scripts...Ok.
어떻게 하면 다음과 같은 것을 얻을 수 있을까요?
Starting initialization... Ok.
Checking init scripts... Ok.
문자열 필드에 너비를 지정할 수 있습니다.
printf("%-20s", "initialization...");
그리고 그 필드와 함께 인쇄된 것은 당신이 지정한 너비에 맞춰 빈 패드로 채워질 것입니다.
그-
왼쪽 맞춤 - 해당 필드의 텍스트를 바꿉니다.
printf
에서는 너비 지정자를 사용하여 형식을 지정할 수 있습니다.예를들면,
printf( "%-30s %s\n", "Starting initialization...", "Ok." );
음의 너비 지정자를 사용하여 왼쪽 자리맞추기를 지정할 수 있습니다.기본값은 오른쪽 자리맞추기를 사용하기 때문입니다.
또, 유저에게의 유연한 선택이 필요한 경우는,width
다음 2가지 형식 중 하나를 선택할 수 있습니다(절단 유무).
int width = 30;
// No truncation uses %-*s
printf( "%-*s %s\n", width, "Starting initialization...", "Ok." );
// Output is "Starting initialization... Ok."
// Truncated to the specified width uses %-.*s
printf( "%-.*s %s\n", width, "Starting initialization...", "Ok." );
// Output is "Starting initialization... Ok."
그리고 또...%n
특정 상황에서 도움이 될 수 있는 수식어.문자열이 지금까지 있었던 열을 반환합니다.예: 첫 번째 행의 너비 내에 있는 여러 행을 표처럼 작성하려고 합니다.
int width1, width2;
int values[6][2];
printf("|%s%n|%s%n|\n", header1, &width1, header2, &width2);
for(i=0; i<6; i++)
printf("|%*d|%*d|\n", width1, values[i][0], width2, values[i][1]);
두 문자열이 같은 너비의 두 열을 인쇄합니다.header1
그리고.header2
있을 수 있습니다.모든 구현이 다음 기능을 갖추고 있는지 모르겠습니다.%n
하지만 Solaris와 Linux에서는 가능합니다.
또한 손으로 공간을 세어 메시지를 정렬하는 다소 낮은 기술 솔루션도 있습니다.메시지 문자열에 몇 개의 후행 공백을 포함할 수 있습니다.
탭(\t 문자 수식자)부터 시작합니다.고정 위치(칼럼, 말단 언어)로 이동합니다.
단, 열 너비(제 기억으로는 4글자) 이상의 차이가 있으면 도움이 되지 않습니다.
이 문제를 해결하려면 , 「OK/NOK」라고 하는 것을, 고정수의 탭(5?6?, 시험해 보세요)으로 써 주세요.그런 다음 줄 바꿈 없이 (\r)을 돌려 메시지를 기록합니다.
언급URL : https://stackoverflow.com/questions/1809399/how-to-format-strings-using-printf-to-get-equal-length-in-the-output
'sourcecode' 카테고리의 다른 글
( this . internalValue || [ ] ).findIndex는 v-select에서 여러 항목을 선택할 때 사용할 수 없음 (0) | 2022.07.26 |
---|---|
.class는 Java에서 무엇을 의미합니까? (0) | 2022.07.26 |
메서드에 대한 양식 제출을 연기하시겠습니까? (0) | 2022.07.26 |
error C2275 : illegal use of this type as an expression (0) | 2022.07.26 |
vue.multiple select 오류입니다. (0) | 2022.07.26 |