Lập trình C/C++

Danh sách định dạng nhập – xuất dữ liệu trong C/C++

Danh sách định dạng nhập – xuất dữ liệu trong C/C++
Được viết bởi Minh Hoàng

Series lập trình C/C++, ngôn ngữ lập trình hệ thống mạnh mẽ.

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 = 65ch = ‘A’ là tương đương vì 65mã 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]

Cảm ơn bạn đã theo dõi. Đừng ngần ngại hãy cùng thảo luận với chúng tôi!

Giới thiệu

Minh Hoàng

Xin chào, tôi là Hoàng Ngọc Minh, hiện đang làm BrSE, tại công ty Toyota, Nhật Bản. Những gì tôi viết trên blog này là những trải nghiệm thực tế tôi đã đúc rút ra được trong cuộc sống, quá trình học tập và làm việc. Các bài viết được biên tập một cách chi tiết, linh hoạt để giúp bạn đọc có thể tiếp cận một cách dễ dàng nhất. Hi vọng nó sẽ có ích hoặc mang lại một góc nhìn khác cho bạn[...]

Translate »