Computer >> 컴퓨터 >  >> 프로그래밍 >> C 프로그래밍

C 언어에서 printf 정렬 옵션으로 출력을 깔끔하게 정렬하는 방법

C 언어에서는 printf 함수의 정렬 옵션(justification)을 활용하면 데이터를 원하는 형식으로 자유롭게 배치할 수 있습니다. 표 형태의 출력이나 이름 목록, 결제 내역 같은 데이터를 출력할 때 특히 유용한 기능입니다.

왼쪽 정렬과 오른쪽 정렬의 기본 원리

서식 지정자에 너비(width)를 지정하면 해당 칸 안에서 문자열이 정렬되며, 기본값은 오른쪽 정렬입니다. 너비 값 앞에 마이너스(-) 기호를 붙이면 왼쪽 정렬로 바뀝니다.

printf("%-15s", text);   /* 15칸 안에서 왼쪽 정렬 */
printf("%15s", text);    /* 15칸 안에서 오른쪽 정렬 */

예제 프로그램 1: 행·열 단위로 데이터 정렬하기

다음 예제는 왼쪽 정렬(%-15s)을 사용하여 이름과 금액 데이터를 표 형태로 깔끔하게 출력합니다.

#include<stdio.h>
int main(){
    char a[20] = "Names", b[20]="amount to be paid";
    char a1[20] = "Bhanu", b1[20]="Hari", c1[20]="Lucky", d1[20]="Puppy";
    int a2=200, b2=400, c2=250, d2=460;
    printf("%-15s %-15s\n", a, b);
    printf("%-15s %-15d\n", a1, a2);
    printf("%-15s %-15d\n", b1, b2);
    printf("%-15s %-15d\n", c1, c2);
    printf("%-15s %-15d\n", d1, d2);
    return 0;
}

실행 결과

Names          amount to be paid
Bhanu          200
Hari           400
Lucky          250
Puppy          460

모든 열이 동일한 너비(15칸)로 정렬되어 표처럼 읽기 쉬운 출력이 만들어졌습니다.

예제 프로그램 2: 정렬 방식과 너비를 바꾼 경우

같은 데이터라도 너비 값과 정렬 방식을 다르게 지정하면 출력 모양이 크게 달라집니다.

#include<stdio.h>
int main(){
    char a[20] = "Names", b[20]="amount to be paid";
    char a1[20] = "Bhanu", b1[20]="Hari", c1[20]="Lucky", d1[20]="Puppy";
    int a2=200, b2=400, c2=250, d2=460;
    printf("%2s %2s\n", a, b);
    printf("%5s %5d\n", a1, a2);
    printf("%2s %2d\n", b1, b2);
    printf("%5s %5d\n", c1, c2);
    printf("%2s %2d\n", d1, d2);
    return 0;
}

실행 결과

Names      amount to be paid
Bhanu    200
Hari 400
Lucky    250
Puppy 460

참고: 지정한 너비가 실제 문자열 길이보다 짧으면 너비는 무시되고, 항목마다 정렬 옵션과 너비를 일관성 있게 지정하지 않으면 위 결과처럼 열이 어긋나 가독성이 크게 떨어집니다.

핵심 정리

  • 오른쪽 정렬(기본값): %15s, %5d처럼 너비만 지정하면 오른쪽으로 정렬됩니다.
  • 왼쪽 정렬: %-15s, %-15d처럼 너비 앞에 -를 붙이면 왼쪽으로 정렬됩니다.
  • 실전 팁: 모든 항목에 동일한 너비를 지정하면 열이 맞춰져 표처럼 정돈된 출력을 만들 수 있습니다.