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처럼 너비 앞에-를 붙이면 왼쪽으로 정렬됩니다. - 실전 팁: 모든 항목에 동일한 너비를 지정하면 열이 맞춰져 표처럼 정돈된 출력을 만들 수 있습니다.