Tất cả dữ liệu được lưu trữ trong máy tính đều ở dưới dạng các dãy mã nhị phân (các dãy chỉ gồm số 0 va 1), nên cần có định dạng nhập xuất để cho chương trình biết được ta sẽ nhập loại dữ liệu gì và muốn xuất dữ liệu theo kiểu dữ liệu nào (như số nguyên, số thực, kí tự, …). Hay nói cách khác, định dạng nhập xuất là cách biểu hiện của dữ liệu theo một kiểu dữ liệu nào đó.
Ví dụ: với kiểu dữ liệu char nó vừa là kiểu kí tự, vừa là kiểu số nguyên. Lệnh gán ch = 65 và ch = ‘A’ là tương đương vì 65 là mã ASCII tương ứng của kí tự ‘A’. Giả sử bạn muốn xuất giá trị biến ch ra ngoài màn hình, thì với định dạng số nguyên chương trình sẽ xuất ra màn hình số 65, còn với định dạng kí tự chương trình sẽ xuất ra màn hình kí tự ‘A’.
Dưới đây là danh sách định dạng nhập – xuất dữ liệu trong C/C++ được sử dụng trong các hàm scanf(), fscanf(), sscanf(), printf(), fprintf(), sprintf_s(), swprintf_s(),…
Định dạng | Kiểu dữ liệu | Ví dụ |
%c | char | "%c" |
%s | char * | "%8s", "%-10s" |
%d | int, short | "%-2d”,"%03d" |
%f | float | "%5.2f" |
%lf | double | "%8.3lf" |
%ld | long | "%-10ld" |
%u | unsigned int, unsigned short | "%2u","%02u" |
%o | int, short, unsigned int, unsigned short |
"%06o","%03o" |
%x | int, short, unsigned int, unsigned short |
"%04x" |
%e | float | "%5.3e" |
%g | float | "%g" |
%lu | unsigned long | "%10lu" |
%lo | long, unsigned long | "%12lo" |
%lx | long, unsigned long | "%08lx" |
Sau đây là một số ví dụ:
Chỉ định số ký tự hiển thị
Số ký tự hiển thị được chỉ định bằng cách: <Tổng số ký tự sẽ hiển thị>.<Số ký tự thập phân sẽ hiển thị>
Không nhất thiết phải chỉ định cả 2 tham số này, có thể chỉ định cả 2, hoặc chỉ cần chỉ định 1 trong 2, hoặc không cần chỉ định tham số nào cũng dc. Nếu không chỉ định tham số nào cả thì giá trị mặc định sẽ được sử dụng.
Format Output printf("[%8.3f]", 123.45678); [ 123.456] printf("[%20s]", "Minh Hoang Blog."); [ Minh Hoang Blog.] printf("[%.10s]", "Minh Hoang Blog."); [Minh Hoang] printf("[%8.3e]", 1234.5678); [1.234e+3]
Số ký tự chữ số chỉ định hiển thị có thể dài hơn chuỗi hiển thị thực tế (chuỗi kết quả hiển thị). Do đó, điều quan trọng khi sử dụng với các hàm xuất như sprintf_s(), cần lưu ý kích thước vùng nhớ của chuỗi muốn output và kích thước của các ký tự chỉ định hiển thị. Vì vậy, để không bị lỗi array overflow thì 2 kích thước này cần phải bằng nhau, hoặc kích thước của các ký tự chỉ định hiển thị nhỏ hơn kích thước của vùng nhớ của chuỗi muốn output.
Chỉ định số 0 hiển thị ở đầu (leading zero)
Muốn thêm số n số 0 phía trước khi chỉ định chữ số hiển thị trong trường hợp xuất ra định dạng số.
Format Output printf("[%08.3f]", 123.45678); [0123.456] printf("[%05d]", 1); [00001]
Chỉ định khoảng cách hiển thị trái・phải (left・right spacing)
Mặc định hiển thị của kết quả output là bên phải. Nếu muốn kết quả output được hiển thị canh lề bên trái thì thêm dấu trừ – trước số chữ số chỉ định hiển thị.
Format Output printf("[%-20s]", "Minh Hoang Blog."); [Minh Hoang Blog. ] printf("[%-8.3f]", 123.45678); [123.456 ] printf("[%-5d]", 1); [1 ]
Chỉ định dấu + hoặc – cho số hiển thị
Mặc định hiển thị số dương sẽ không có dấu + phía trước. Nếu muốn thêm dấu + phía trước cho kết quả output là giá trị số thì thêm dấu cộng + trước số chữ số chỉ định hiển thị.
Format Output printf("[%+5d]", 68); [ +68] printf("[%+5d]", -68); [ -68] printf("[%+8.3f]", 2.017); [ +2.017]