출력에서 동일한 길이를 얻기 위해 printf ()를 사용하여 문자열을 포맷하는 방법은 무엇입니까?
I는 두 가지 기능 등을 생성 한 메시지가 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
하려면 다음 두 가지 형식 (잘림 포함 또는 제외) 중 하나를 선택할 수 있습니다.
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]);
어떤 길이 두 문자열의 동일한 폭의 2 열을 인쇄 할 header1
및 header2
있을 수 있습니다. 모든 구현에 %n
Solaris와 Linux가 있는지는 모르겠습니다 .
메시지를 정렬하기 위해 손으로 공백을 추가하는 다소 낮은 기술 솔루션도 있습니다. 메시지 문자열에 몇 개의 후행 공백을 포함하는 것을 방해하는 것은 없습니다.
\ t 문자 수정자인 탭을 사용하여 시작하십시오 . 고정 된 위치 (열, 터미널 용어)로 진행됩니다. 그러나 열 너비보다 큰 차이가 있으면 도움이되지 않습니다 (올바르게 기억하면 4 자).
이 문제를 해결하려면 고정 된 수의 탭 (5? 6 ?, 시도)을 사용하여 "OK / NOK"항목을 작성한 다음 줄 바꿈 없이 리턴 ( \ r )하고 메시지를 작성하십시오.
'Program Tip' 카테고리의 다른 글
Python 스크립트는 터미널에서 명령을 실행합니다. (0) | 2020.10.04 |
---|---|
Pandas 데이터 프레임 내의 열을 정수에서 문자열로 변환 (0) | 2020.10.04 |
logcat에서 긴 메시지를 표시하는 방법 (0) | 2020.10.04 |
FirstOrDefault를 어떻게 확인할 수 있습니까? (0) | 2020.10.04 |
WebClient.DownloadString은 인코딩 문제로 인해 문자가 왜곡되지만 브라우저는 정상입니다. (0) | 2020.10.04 |