출력에서 동일한 길이를 얻기 위해 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 |