Cùng tìm hiểu về Định dạng nhập xuất trong C. Bạn sẽ biết khái niệm định dạng nhập xuất trong C là gì, cũng như cách chỉ định và sử dụng của hầu hết các định dạng nhập xuất trong ngôn ngữ C sau bài học này.
Tóm Tắt
Định dạng nhập xuất trong C là gì
Định dạng nhập xuất trong C chính là các bộ mô tả có tác dụng chỉ định định dạng hiển thị của các dữ liệu nhập và xuất trong C. Định dạng nhập xuất được sử dụng trong các hàm như printf(), fprintf(), sprintf(), scanf(), fscanf() và sscanf() trong ngôn ngữ C.
Bảng định dạng xuất trong C
Dưới đây là bảng các định dạng xuất thông dụng được sử dụng trong các hàm xuất dữ liệu trong C như printf(),fprintf(),sprintf().
Chuỗi định dạngĐại diện cho kiểu ký tựÝ nghĩaVí dụ%c
charXuất ra một ký tự"%c"
%s
char *
Xuất ra một chuỗi ký tự"%8s", "%-10s"
%d
int, shortXuất ra một số nguyên dưới dạng thập phân"%-2d","%03d"
%u
unsigned int, unsigned shortXuất ra một số nguyên dưới dạng thập phân không dấu"%2u","%02u"
%x
int, short, unsigned int, unsigned shortXuất ra một số nguyên dưới dạng thập lục phân%04x"
%o
int, short,unsigned int, unsigned shortXuất ra một số nguyên dưới dạng bát phân"%06o","%03o"
%f
floatXuất ra một số thực"%5.2f"
%e
floatXuất ra một số thực dưới dạng số mũ"%5.3e"
%g
floatXuất ra một số thực dưới dạng phù hợp nhất"%g"
%ld
longxuất ra số nguyên chính xác kép ở dạng thập phân"%-10ld"
%lu
unsigned longxuất ra số nguyên chính xác kép ở dạng thập phân không dấu"%10lu"
%lo
long, unsigned longXuất ra số nguyên chính xác kép trong hệ bát phân"%12lo"
%lx
long, unsigned longxuất ra số nguyên chính xác kép ở hệ thập lục phân"%08lx"
%lf
double, unsigned longxuất ra số thực chính xác gấp đôi"%8.3lf"
%a
doubleXuất ra một số thực chính xác kép thập lục phân"%a"
Chỉ định số chữ số hiển thị trong C
Để chỉ định số chữ số hiển thị trong C, chúng ta sử dụng tới [chiều rộng tổng thể. chiều rộng sau dấu thập phân]
. Chúng ta có thể lược bỏ một trong 2, hoặc là lược bỏ tất cả cũng không sao. Nếu không chỉ định chúng thì giá trị mặc định sẽ được sử dụng. Chú ý rằng chiều rộng sau dấu thập phân
trong trường hợp chỉ định cho số có ý nghĩa là số chữ số hàng thập phân, tuy nhiên nếu chỉ định cho chuỗi ký tự sẽ có ý nghĩa là số ký tự đối đa của chuỗi đó.
Các ví dụ cụ thể:
Ví dụKết quảprintf("[%8.3f]", 123.45678);
[ 123.456]
printf("[%15s]", "I am a boy.");
[ I am a boy.]
printf("[%.6s]", "I am a boy.");
[I am a]
printf("[%8.3e]", 1234.5678);
[1.234e+3]
Lại nữa, cũng có những trường hợp mà chuỗi ký tự hiển thị thực tế có thể dài hơn số chữ số hiển thị được chỉ định. Điều này cần đặc biệt chú ý trong trường hợp chúng ta sử dụng hàm sprintf(). Lý do ở đây là vì hiện tượng tràn mảng. Ngay cả khi định dạng được chỉ định có cùng kích thước với vùng lưu trữ của chuỗi ký tự đi chăng nữa thì hiện tượng tràn mảng cũng có thể xảy ra.
Đệm số 0 đầu chuỗi cần in trong C
Trong trường hợp xuất số ra màn hình, chúng ta có thể đệm số 0 vào đầu chuỗi cho đủ độ dài của kết quả chuỗi Xuất ra màn hình như sau:
Ví dụKết quảprintf("[%08.3f]", 123.45678);
[0123.456]
printf("[%05d]", 1);
[00001]
Căn trái căn phải chuỗi cần in trong C
Chúng ta có thể căn trái căn phải chuỗi cần in trong C bằng cách sử dụng tới đối số flags -
như dưới đây.
Ví dụKết quảprintf("[%-15s]", "I am a boy.");
[I am a boy. ]
printf("[%15s]", "I am a boy.");
[ I am a boy.]
printf("[%-8.3f]", 123.45678);
[123.456 ]
printf("[%8.3f]", 123.45678);
[ 123.457]
printf("[%-5d]", 1);
[1 ]
printf("[%5d]", 1);
[ 1]
Chỉ định dấu trong số khi in
Chúng ta có thể chỉ định dấu trong số khi in kết quả trong C bằng cách sử dụng tới đối số flags +
như dưới đây.
Ví dụKết quảprintf("[%+5d]", 32);
[ +32]
printf("[%+5d]", -32);
[ -32]
printf("[%+8.3f]", 1.414);
[ +1.414]
Bảng định dạng nhập trong C
Dưới đây là bảng các định dạng nhập thông dụng được sử dụng trong các hàm nhập dữ liệu trong C như scanf(),fscanf(),sscanf().
Chuỗi định dạngĐại diện cho kiểu ký tựÝ nghĩa%c
charNhập một ký tự%s
char *
Nhập một chuỗi ký tự%d
int, shortNhập một số nguyên dưới dạng thập phân%u
unsigned int, unsigned shortNhập một số nguyên dưới dạng thập phân không dấu%x
int, short, unsigned int, unsigned shortNhập một số nguyên dưới dạng thập lục phân%o
int, short,unsigned int, unsigned shortNhập một số nguyên dưới dạng bát phân%f
floatNhập một số thực%e
floatNhập một số thực dưới dạng số mũ%g
floatNhập một số thực dưới dạng phù hợp nhất%ld
longNhập số nguyên chính xác kép ở dạng thập phân%lu
unsigned longNhập số nguyên chính xác kép ở dạng thập phân không dấu%lo
long, unsigned longNhập số nguyên chính xác kép trong hệ bát phân%lx
long, unsigned longNhập số nguyên chính xác kép ở hệ thập lục phân%lf
double, unsigned longNhập số thực chính xác gấp đôi%a
doubleNhập một số thực chính xác kép thập lục phân
Tổng kết
Trên đây Kiyoshi đã hướng dẫn bạn về định dạng nhập xuất trong C rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.
Và hãy cùng tìm hiểu những kiến thức sâu hơn về C trong các bài học tiếp theo.