Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Căn chỉnh đầu ra (Output Alignment) trong C với printf

Văn bản căn chỉnh (Justification) trong printf

C cung cấp định dạng rộng (width) và căn chỉnh trong printf để trình bày dữ liệu đẹp, bảng biểu rõ ràng.

Cú pháp cơ bản

%[cờ][độ rộng][.độ chính xác]kiểu
Ký hiệu Ý nghĩa
%10sCăn phải (right), rộng 10 ký tự
%-10sCăn trái (left), rộng 10 ký tự
%5dSố nguyên căn phải, rộng 5
%-5dSố nguyên căn trái, rộng 5
%10.2fSố thực căn phải, rộng 10, 2 số thập phân

Chương trình 1: Căn trái (Left Justification) - Dùng cho bảng

#include <stdio.h>

int main() {
    char tenCot1[20] = "Ten", tenCot2[20] = "So tien";
    char ten1[20] = "Bhanu", ten2[20] = "Hari", ten3[20] = "Lucky", ten4[20] = "Puppy";
    int tien1 = 200, tien2 = 400, tien3 = 250, tien4 = 460;
    
    // %-15s: căn trái, rộng 15 ký tự
    printf("%-15s %-15s\n", tenCot1, tenCot2);
    printf("%-15s %-15d\n", ten1, tien1);
    printf("%-15s %-15d\n", ten2, tien2);
    printf("%-15s %-15d\n", ten3, tien3);
    printf("%-15s %-15d\n", ten4, tien4);
    
    return 0;
}

Kết quả chương trình 1

Ten            So tien        
Bhanu          200            
Hari           400            
Lucky          250            
Puppy          460            

Chương trình 2: Căn phải (Right Justification) - Mặc định

#include <stdio.h>

int main() {
    char tenCot1[20] = "Ten", tenCot2[20] = "So tien";
    char ten1[20] = "Bhanu", ten2[20] = "Hari", ten3[20] = "Lucky", ten4[20] = "Puppy";
    int tien1 = 200, tien2 = 400, tien3 = 250, tien4 = 460;
    
    // %2s, %5d: căn phải (mặc định)
    printf("%2s %2s\n", tenCot1, tenCot2);
    printf("%5s %5d\n", ten1, tien1);
    printf("%2s %2d\n", ten2, tien2);
    printf("%5s %5d\n", ten3, tien3);
    printf("%2s %2d\n", ten4, tien4);
    
    return 0;
}

Kết quả chương trình 2

Ten So tien
Bhanu   200
Hari    400
Lucky   250
Puppy   460

So sánh và khi nào dùng cái nào

Loại dữ liệu Khuyến nghị Ví dụ
Chuỗi (tên, mã...)Căn trái (%-Ns)%-20s
Số liệu (giá, số lượng...)Căn phải (%Nd, %N.2f)%10d, %8.2f
Tiêu đề cộtCăn trái cho chuỗi, căn phải cho sốThống nhất theo dữ liệu cột

Ví dụ thực tế: Bảng điểm sinh viên

printf("%-5s %-20s %5s %5s %5s %6s\n", "STT", "Ho ten", "Toan", "Ly", "Hoa", "TB");
printf("%-5d %-20s %5d %5d %5d %6.2f\n", 1, "Nguyen Van A", 8, 7, 9, 8.0);
printf("%-5d %-20s %5d %5d %5d %6.2f\n", 2, "Tran Thi B", 9, 8, 7, 8.0);

Kết quả

STT  Ho ten                 Toan   Ly  Hoa   TB
1    Nguyen Van A             8    7    9  8.00
2    Tran Thi B               9    8    7  8.00

Các cờ định dạng hữu ích khác

  • 0: Điền số 0 đầu (%05d → 00042)
  • +: Luôn hiện dấu (+/-) (%+d → +42, -5)
  • (space): Dấu dương là space, âm là - (% d → 42, -5)
  • #: Dạng thay thế (0x cho hex, 0 cho octal, .0 cho float)

Kỹ năng căn chỉnh đầu ra quan trọng cho: báo cáo, log file, giao diện console, xuất dữ liệu CSV/TSV.