Hàm printf() và cách xuất dữ liệu trong C

Phần trước hết trong chuyên mục nhập xuất trong C, tất cả chúng ta sẽ cùng tìm tòi về hàm printf() và cách xuất dữ liệu và xuất kết quả ra màn hình trong C. Bạn sẽ học được định nghĩa cũng như các cách giải quyết cơ bản và chuyên sâu của hàm printf() trong C sau bài học này.

printf trong ͼ là gì

printf() trong C là một hàm cài sẵn trong tệp tiêu đề Standard Input / Output, có tính năng hiển thị (xuất) dữ liệu ra màn hình khi chạy chương trình C.
Hàm printf() trong C

Tất cả chúng ta sử dụng hàm printf() trong C với cú pháp sau đây.

printf (*format, object1, object2, … )

Trong số đó:

  • object: đối tượng (dữ liệu) cần xuất ra màn hình. Tất cả chúng ta có thể chỉ định một hoặc là nhiều đối tượng khác nhau và xuất chúng song song ra màn hình, và trong trường hợp có nhiều đối tượng thì cần phải đặt chúng cách nhau bởi dấu phẩy.
  • *format: tập hợp chuỗi định dạng nhập xuất của các đối tượng cần xuất ra màn hình. Định dạng nhập xuất giúp chỉ định kiểu dữ liệu của đối tượng cần nhập vào, và dấu * có ý nghĩa là số nhiều và có bao nhiêu đối tượng được chỉ định thì cũng sẽ có từng ấy định dạng tương ứng được chỉ định. Đọc thêm: Định dạng nhập xuất trong C.

Hàm printf() sẽ xuất ra màn hình các đối tượng cần xuất theo đúng như định dạng format đã được chỉ định. Note là tất cả chúng ta cần chỉ định đúng đắn format của đối tượng cần xuất, nếu như không thì sẽ chẳng thể xuất ra đúng kết quả mong đợi, hoặc là sẽ xảy ra lỗi trong công cuộc compile chương trình C. Chẳng hạn như nếu xuất ra kiểu số nguyên dạng thập phân thì phải chỉ định format là %{d}, hoặc kiểu chuỗi thì phải là %s ví dụ.

Cách dùng cơ bản của printf trong C

Lược bỏ chuỗi định dạng format khi dùng hàm printf trong C

Tất cả chúng ta có thể lược bỏ chuỗi định dạng format và sử dụng hàm printf để xuất một ký tự hoặc một chuỗi ký tự bất kỳ, như chẳng hạn sau đây:



int

main

(

void

)

{


printf

(

"a"

);


printf

(

"hello world"

);


printf

(

"1"

);


return

;


}


Note là tất cả chúng ta cần phải đặt ký tự hoặc chuỗi ký tự cần xuất vào giữa cặp dấu nháy kép "", nếu như không thì lỗi sẽ xảy ra như các cách viết sau đây:

printf

(

'α'

);


>> warning: incompatible integer to pointer conversion


>> passing 'int' to parameter of type 'const char *'



printf

(

1

);


>> warning: incompatible integer to pointer conversion


>> passing 'int' to parameter of type 'const char *'


xuất không xuống dòng trong C

Về mặc định sau khoảng thời gian chấm dứt một câu lệnh sử dụng hàm printf căn bản, thì kết quả hiển thị ra màn hình sẽ không auto xuất xuống dòng mà sẽ tiếp tục xuất ra kết quả của lệnh printf kế tiếp.

Hãy cùng xem chẳng hạn rõ ràng và cụ thể sau đây:

printf

(

"Hello"

);


printf

(

"Viet Nam"

);



xuất xuống dòng trong C

Nếu sử dụng hàm printf trong C theo cách mặc định thì kết quả sẽ không auto xuất xuống dòng, vì vậy tất cả chúng ta cần phải sử dụng một ký tự đặc biết có công dụng xuất xuống dòng, này là ký tự xuống dòng ɳ trong C.

Chẳng hạn:

printf

(

"Hellon"

);


printf

(

"Viet Nam"

);




Sử dụng chuỗi định dạng format khi dùng hàm printf trong C

Trong các trường hợp cần phải xuất dữ liệu ra màn hình với các yêu cầu chuyên sâu, thì tất cả chúng ta sẽ chỉ định thêm chuỗi định dạng format khi sử dụng hàm printf.

Xem Thêm  4 cách để thêm mục vào danh sách bằng Python - thêm các mục vào danh sách

Chuỗi định dạng format sẽ được chỉ định theo cú pháp sau đây. Note là các đối số viết trong cặp dấu [] thì có thể được lược bỏ.

%[flags][width][.precision][length]specifier

  • flags chứa các chỉ định có công dụng cân chỉnh, thêm dấu , đệm số 0 ?.?..
  • width: độ dài ít nhất của kết quả xuất
  • .precision : độ đúng đắn khi xuất số thực (số chữ số đằng sau dấu phẩy số thực sau khoảng thời gian làm tròn)
  • length: chỉ định bởi một trong các ký tự н,ɭ hoặc ɭ nhằm xác nhận số thuộc dạng short, long hay long double
  • specifier là định dạng của chuỗi kết quả.

Mặc dầu có rất là nhiều đối số trong cú pháp tổng quát khi chỉ định format, bên cạnh đó trong thực tiễn tất cả chúng ta thường đúc kết chủ yếu và chỉ sử dụng tới đối số specifier với cú pháp dễ dàng nhất sau đây:

%specifier

Chẳng hạn rõ ràng và cụ thể, tất cả chúng ta sử dụng hàm printf() với chuỗi định dạng format như sau:



int

main

(

void

)

{


printf

(

"%d%s"

,

7

,

" chú lùn"

);


}



Với chẳng hạn này, tất cả chúng ta có 2 đối tượng cần xuất ra màn hình là số 7 và chuỗi ký tự "chú lùn". Tương ứng với 2 đối tượng đó là các specifier (chuỗi định dạng) gồm %{d} (kiểu số) và %s (kiểu chuỗi ký tự). Và 2 định dạng này được viết trong tập hợp format là "%d%s" như trên.

Tất cả chúng ta cũng có thể sử dụng biến để gán các giá trị, và sau đó sử dụng chuỗi định dạng phù phù hợp với kiểu của biến đó để xuất kết quả ra màn dường như sau:



int

main

(

void

)

{


int

num =

7

;


char

str[] =

" chú lùn"

;


printf

(

"%d%s"

, num , str );


}



Danh mục các chuỗi định dạng sử dụng trong C sẽ được Kiyoshi trình bày ở bảng dưới đây.

Bảng chuỗi định dạng nhập xuất trong C

Dưới đây là bảng chuỗi định dạng nhập xuất phổ biến trong C hay được dùng nhất.

Chuỗi định dạngĐại diện cho kiểu ký tựÝ nghĩacharXuất ra một ký tự%schar *Xuất ra một chuỗi ký tự%{d}int, shortXuất ra một số nguyên dưới dạng thập phân%uunsigned int, unsigned shortXuất ra một số nguyên dưới dạng thập phân không dấuint, short, unsigned int, unsigned shortXuất ra một số nguyên dưới dạng thập lục phânint, short,unsigned int, unsigned shortXuất ra một số nguyên dưới dạng bát phânfloatXuất ra một số thực%efloatXuất ra một số thực dưới dạng số mũfloatXuất ra một số thực dưới dạng phù thống nhất%ldlongXuất ra số nguyên đúng đắn kép ở dạng thập phân%luunsigned longXuất ra số nguyên đúng đắn kép ở dạng thập phân không dấu%lolong, unsigned longXuất ra số nguyên đúng đắn kép trong hệ bát phân%lxlong, unsigned longXuất ra số nguyên đúng đắn kép ở hệ thập lục phân%lfdouble, unsigned longXuất ra số thực đúng đắn gấp đôidoubleXuất ra một số thực đúng đắn kép thập lục phân

  • Đọc thêm: Định dạng nhập xuất trong C

không dừng lại ở đó, tất cả chúng ta có thể phối hợp các chuỗi định dạng ở trên với các ký tự đặc biệt như ký tự xuống dòng ɳví dụ để tinh chỉnh các kết quả khi xuất ra màn hình. Có ba ký tự hay được dùng đặc biệt là:

Xem Thêm  Cách thay đổi hình nền bằng css - thay đổi hình ảnh nền css

Ký tự đặc biệtÝ nghĩaɳXuống dòngtDấu tab Chấm dứt chuỗi

Sử dụng chuỗi định dạng trong hàm printf để xuất dữ liệu trong C

Áp dụng các tri thức ở trên, tất cả chúng ta có thể chỉ định và xuất dữ liệu ra màn hình với các kiểu dữ liệu thông dụng nhất trong C như dưới đây:

Xuất ký tự trong C | printf char trong C bằng %ͼ|

Tất cả chúng ta sử dụng chuỗi định dạng để xuất ký tự trong C ra màn hình các chẳng hạn sau:

printf

(

"%cn"

,

'α'

);


printf

(

"%c%cn"

,

'α'

,

'ɓ'

);


printf

(

"a=%ctb=%cn"

,

'α'

,

'ɓ'

);



printf

(

"%cn%c"

,

'α'

,

'ɓ'

);




Xuất chuỗi ký tự trong C| printf string trong C bằng %s

Tất cả chúng ta sử dụng chuỗi định dạng %s để xuất chuỗi ký tự trong C ra màn hình các chẳng hạn sau:

printf

(

"%sn"

,

"abc"

);


printf

(

"%s%sn"

,

"abc"

,

"123"

);


printf

(

"str1=%s,tstr2=%sn"

,

"abc"

,

"123"

);



printf

(

"%sn%s"

,

"abc"

,

"123"

);




printf int trong C bằng %{d},%Ҳ,%σ

Tất cả chúng ta sử dụng một trong các chuỗi định dạng thông dụng như %{d},%Ҳ,%σ để printf số nguyên trong C ra màn hình các chẳng hạn sau:

printf

(

"Dạng thập phân:%dn"

,

88

);


printf

(

"Dạng thập lục phân:%xn"

,

88

);


printf

(

"Dạng bát phân:%on"

,

88

);


printf

(

"Ngày%c tháng%c năm%c"

,

11

,

8

,

2021

);


printf float trong ͼ bằng %ƒ,%e

Tất cả chúng ta sử dụng chuỗi định dạng thông dụng như %ƒ,%e để printf float trong C ra màn hình các chẳng hạn sau:

printf

(

"%fn"

,

12.34

);


printf

(

"%en"

,

12.34

);


printf

(

"%ft%fn"

,

12.34

,

56.7

);


printf

(

"float1=%ftfloat2=%f"

,

12.34

,

56.7

);


Note là ở giai đoạn này tất cả chúng ta sử dụng định dạng và không thêm các định dạng nhằm làm tròn số, nên kết quả sẽ có nhiều số 0 đằng sau dấu phẩy như ở trên. Để có thể làm tròn và quyết định số chữ số trong kết quả, tất cả chúng ta cần sử dụng thêm 2 đối số trong hàm printf là [width][.precision] như dưới đây:

printf

(

"%2.2fn"

,

12.34

);


printf

(

"%2.2ft%2.1fn"

,

12.34

,

56.7

);


printf

(

"float1=%4.4ftfloat2=%4.4f"

,

12.34

,

56.7

);


Tất cả chúng ta sẽ làm rõ về 2 đối số này ở phần dưới bài nhé.

printf double trong ͼ bằng %lf,%α

Ngoài các định dạng sử dụng với float đều có thể sử dụng với khi printf double trong C thì tất cả chúng ta cũng sử dụng một trong các chuỗi định dạng thông dụng như %lf,%α để printf double trong C ra màn hình các chẳng hạn sau:

printf

(

"%lfn"

,

12.34

);


printf

(

"%an"

,

12.34

);


printf

(

"%en"

,

12.34

);


printf

(

"%fn"

,

12.34

);


Cũng giống như trên thì ở giai đoạn này tất cả chúng ta sử dụng định dạng và không thêm các định dạng nhằm làm tròn số, nên kết quả sẽ có nhiều số 0 đằng sau dấu phẩy như ở trên.

xuất ra ký tự % % trong C

Để xuất ra ký tự % % trong C, tất cả chúng ta sẽ sử dụng tới định dạng %% như các chẳng hạn sau:

printf

(

"Tỉ lệ nước trong người là %d%%"

,

70

);




printf

(

"%d%% sản phẩm bán chạy"

,

20

);


20

% sản phẩm bán chạy


Cách dùng chuyên sâu của printf trong C

Bằng cách chỉ định các đối số như flags,width,.precisionlength, tất cả chúng ta có thể định thêm các định dạng đầu ra chuyên sâu như căn trái, thêm dấu, đệm số 0 ?.?.. khi xuất dữ liệu trong C bằng cách sử dụng cú pháp đầy đủ của printf trong C như Kiyoshi đã trình bày ở phần trên.

%[flags][width][.precision][length]specifier

  • flags chứa các chỉ định có công dụng cân chỉnh, thêm dấu , đệm số 0 ?.?..
  • width: độ dài ít nhất của kết quả xuất
  • .precision : độ đúng đắn khi xuất số thực (số chữ số đằng sau dấu phẩy số thực sau khoảng thời gian làm tròn)
  • length: chỉ định bởi một trong các ký tự н,ɭ hoặc ɭ nhằm xác nhận số thuộc dạng short, long hay long double
  • specifier là định dạng của chuỗi kết quả
Xem Thêm  Cách thêm CSS - liên kết css tới biểu định kiểu

Trước tiên, hãy tham khảo về flags. Bảng các flags có thể sử dụng trong hàm printf như sau:

flagÝ nghĩa-Căn trái+Thêm dấu cho số0Đệm số 0 cho vừa độ dài kết quả xuấtspaceĐệm dấu cách cho vừa độ dài kết quả xuất#Chỉ định các xuất dữ liệu khác

Kế tiếp là về width. Đây là đối số chỉ định độ dài ít nhất của chuỗi kết quả xuất ra màn hình. Nếu như độ dài thực của chuỗi kết quả bé hơn giá trị của width thì các giá trị chỉ định trong flags như số 0 hay dấu cách sẽ được sử dụng để đệm cho vừa độ dài width.

.precision là độ đúng đắn khi xuất ra màn hình các số thực dấu phẩy động như float hay double. Độ đúng đắn này nói cách khác chính là số chữ số ở phần thập phân của số thực khi xuất. Chẳng hạn nếu .precision bằng 2 thì số thực 1.236 sẽ được chuyển thành 1.24 ví dụ.

Kế tiếp là length, đối số được chỉ định bởi một trong các ký tự н,ɭ hoặc ɭ nhằm xác nhận số thuộc dạng short, long hay long double.

Cuối cùng là specifier là định dạng của chuỗi kết quả như Kiyoshi đã trình bày ở các phần trên.

Áp dụng các tri thức trên, tất cả chúng ta có thể định dạng chuyên sâu đầu ra của hàm printf trong C với các công thức như sau:

Chỉ định độ đúng đắn

Bằng cách sử dụng .precision, tất cả chúng ta có thể chỉ định độ đúng đắn (số chữ số đằng sau dấu phẩy) khi xuất dữ liệu trong C như sau:



int

main

(

void

)

{


double

d1 =

12.34567

;


double

d2 =

123.4567

;




printf

(

"d1:[%.2f]n"

, d1);


printf

(

"d2:[%.2f]n"

, d2);



return

;


}


Đệm dấu cách cho vừa độ dài chuỗi kết quả

Để Đệm số 0 hoặc dấu cách vào bên trái hoặc bên phải chuỗi kết quả, tất cả chúng ta cần sử dụng tới đối số width và flags căn trái - như sau:



int

main

(

void

)

{


double

{d} =

12.34

;


char

str[

8

] =

"Hello!"

;




printf

(

"d:[%10f]n"

, {d});



printf

(

"str:[%10s]n"

, str);




printf

(

"d:[%-10f]n"

, {d});


printf

(

"str:[%-10s]n"

, str);



return

;


}


Đệm số 0 cho vừa độ dài chuỗi kết quả

Một cách tương đương thì tất cả chúng ta cũng có thể sử dụng tới width và flags để đệm số 0 cho vừa độ dài chuỗi kết quả khi xuất ra màn hình. Và flags tất cả chúng ta sử dụng giờ đây là như sau:



int

main

(

void

)

{


double

{d} =

12.34

;


int

num =

1234

;




printf

(

"d:[%010f]n"

, {d});


printf

(

"num:[%010d]n"

, num);



return

;


}


Chỉ định dấu trong số khi in

Tất cả 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.



int

main

(

void

)

{


printf

(

"[%+5d]"

,

32

);


printf

(

"[%+5d]"

,

-32

);


printf

(

"[%+8.3f]"

,

1.414

);


return

;


}


Kết luận

Trên đây Kiyoshi đã chỉ dẫn bạn về hàm printf() và cách xuất dữ liệu và xuất kết quả ra màn hình trong C rồi. Để nắm vững bài viết bài học hơn, bạn hãy thực hành viết lại các chẳng hạn của ngày lúc này nhé.

Và hãy cùng tìm tòi những tri thức sâu hơn về C trong các bài học kế tiếp.

Viết một bình luận