C語言中printf()函數(shù)的全面介紹及用法(簡單易懂)
【說明】這是 C語言中的輸出函數(shù),當(dāng)然在 C++ 中也可以使用,只是有的需要改變一下形式,下面會提及,C++中一般使用 cout。(這里篇幅比較長,可以收藏一下哦)
一:頭文件
printf()函數(shù)的頭文件是 <stdio.h>。
二:格式控制字符串
格式控制字符串就是用雙引號括起來的字符串,包括三類:
1.格式字符。
格式字符是由 "%" 引導(dǎo),它是用來控制輸出字符的格式。有這個字符串時,必須要保持輸出值參數(shù)表中的數(shù)量和類型格式與格式字符一致,否則輸出的值可能不是我們想要的。
格式字符說明 | |
%c | 字符型 |
%d | 十進(jìn)制數(shù) |
%i | 讀入十進(jìn)制、八進(jìn)制、十六進(jìn)制數(shù),輸入的時候正常是十進(jìn)制,若輸入0前綴的數(shù)將讀入八進(jìn)制,0X前綴讀入16進(jìn)制 |
%f | float型浮點數(shù) |
%o | 八進(jìn)制 |
%s | 字符串,碰到空格或回車結(jié)束 |
%x | 16進(jìn)制 |
%p | 指針 |
%n | 至此已讀入值的等價字符數(shù) |
%lf | double型浮點數(shù) |
2.轉(zhuǎn)義字符。
按照轉(zhuǎn)義后的含義輸出,比如 "\n" ,意思是輸出后換行。
3.普通字符。
意思是需要在輸出時原樣輸出的字符,比如下面代碼中的 "a="。
#include <iostream> #include <stdio.h> using namespace std; int main() { int a=31; printf("a=%d",a);// a是int型整數(shù),所以用 %d }
【輸出結(jié)果】
三:格式字符輸出示例
1. %c-----------輸出字符
#include <iostream> #include <stdio.h> using namespace std; int main() { char ch='d'; printf("%c",ch); }
【輸出結(jié)果】
2. %s-----------輸出字符串
#include <iostream> #include <stdio.h> using namespace std; int main() { printf("%s","Hello World!"); }
【輸出結(jié)果】
【注意】上述是 C語言的寫法,當(dāng)你在C++中用 printf()時,下面的寫法肯定是錯誤的,因為 printf()函數(shù)不支持 std::string 類型,它期望的是 C 風(fēng)格的字符串。
#include <iostream> #include <stdio.h> using namespace std; int main() { string str="Hello World!"; printf("%s",str); }
那么要怎么改呢?std::string 類提供了一個成員函數(shù) c_str(),該函數(shù)返回一個指向以 null 結(jié)尾的字符數(shù)組的指針(即 C 風(fēng)格的字符串),這個數(shù)組包含了字符串的內(nèi)容。這個指針可以被 printf()函數(shù)接受。
【代碼如下】
#include <iostream> #include <stdio.h> using namespace std; int main() { string str="Hello World!"; printf("%s",str.c_str()); }
【輸出結(jié)果】
【說明】其實關(guān)于 std::string 中的 c_str()函數(shù),也有很多類似用處,比如——atoi()函數(shù),atoi()函數(shù)可以將字符串轉(zhuǎn)化成 int 型整數(shù),這在字符串相關(guān)問題中是比較常用的,還是掌握一下比較好,具體的可以點進(jìn)我的主頁中,里面的一篇文章詳細(xì)介紹了這個函數(shù)以及其他字符串中常用的函數(shù)。當(dāng)轉(zhuǎn)換 std::string 類型的字符串時就要用 c_str()函數(shù)。
四:還可以指定輸出數(shù)據(jù)的指定數(shù)據(jù)寬度和小數(shù)位數(shù),即 %m.nf。
1.其中 m 表示輸出數(shù)據(jù)的寬度,即占 m 列,n 表示小數(shù)點后保留 n 位小數(shù),如題目中沒有強(qiáng)調(diào)輸出數(shù)據(jù)的寬度,直接 %.nf 即可。
【代碼如下】
#include <iostream> #include <stdio.h> using namespace std; int main() { double a=3.7839127; printf("%8.4f\n",a); }
【運(yùn)行結(jié)果】
可以從結(jié)果中看出,輸出的數(shù)據(jù)保留了四位小數(shù),而且數(shù)據(jù)前有兩個空格,還有換行。(還有 double 型數(shù)只能保證15位有效小數(shù),即使指定小數(shù)位數(shù)為20或其他超過15的,比如 %.20f,也不能保證輸出的20位小數(shù)都是有效數(shù)值)
【說明】保留小數(shù)還可以用 setprecision(n),n 是要保留的小數(shù)位數(shù),注意前面要加上 fixed。比如,cout<<fixed<<setprecision(5)<<num;意思是保留 num 的五位小數(shù)并輸出。
2.在 m.nf 前面加上一個負(fù)號,可以讓輸出的數(shù)據(jù)在域內(nèi)向左靠齊。以上面代碼為例。
#include <iostream> #include <stdio.h> using namespace std; int main() { double a=3.7839127; printf("%-8.4f\n",a); }
【運(yùn)行結(jié)果】
五:printf()函數(shù)中的格式修飾符
1.字母 l 修飾字符 f、e、g 時,用于輸出 long double 型數(shù)據(jù)。
2.字母 i 修飾字符 d、u、o、x 時,用于輸出 long 型數(shù)據(jù)。
3.字母 h 修飾字符d、o、x 時,用于輸出 short 型數(shù)據(jù)。
4.還有上面提到的 輸出域?qū)抦、顯示精度n、(m、n都是整數(shù)),以及減號 -(輸出數(shù)字或字符 ,在域內(nèi)向左靠)。
六:printf()函數(shù)的返回值
這個其實用的并不多,也可以了解一下。
printf()函數(shù)返回值 int型,也就是說在進(jìn)行嵌套使用時,它的打印格式是 %d。它返回的內(nèi)容就是打印字符的個數(shù)。下面會舉兩個例子來說明。
【樣例一】
#include <iostream> #include <stdio.h> using namespace std; int main() { printf("%d",printf("%d",printf("%d",54))); return 0; }
【輸出結(jié)果】
先輸出54,因為 printf("%d,54)打印出來的是兩個字符,所以 printf("%d",printf("%d",54))輸出的是2,同理,最終輸出的是5421。
【樣例二】
#include <iostream> #include <stdio.h> using namespace std; int main() { printf("%d ",printf("%d ",printf("%d ",54))); return 0; }
【輸出結(jié)果】
這個和上面的差不多,只是 %d 后面有了一個空格,所以導(dǎo)致輸出了 “54 3 2 ”。
總結(jié)
到此這篇關(guān)于C語言中printf()函數(shù)的全面介紹及用法的文章就介紹到這了,更多相關(guān)C語言中printf()函數(shù)用法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
基于Python執(zhí)行dos命令并獲取輸出的結(jié)果
這篇文章主要介紹了基于Python執(zhí)行dos命令并獲取輸出的結(jié)果,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-12-12pandas中.loc和.iloc以及.at和.iat的區(qū)別說明
這篇文章主要介紹了pandas中.loc和.iloc以及.at和.iat的區(qū)別說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04pybaobabdt庫基于python的決策樹隨機(jī)森林可視化工具使用
這篇文章主要為大家介紹了pybaobabdt庫基于python的決策樹隨機(jī)森林可視化工具使用探索,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-02-02使用Python腳本實現(xiàn)批量網(wǎng)站存活檢測遇到問題及解決方法
本文是小編自己編寫的一個使用python實現(xiàn)批量網(wǎng)站存活檢測。在項目測試中非常有用。本文給大家分享了遇到的問題及解決方案,非常不錯,具有參考借鑒價值,感興趣的朋友一起看看吧2016-10-10Python進(jìn)階學(xué)習(xí)之特殊方法實例詳析
一般說來,特殊的方法都被用來模仿某個行為。下面這篇文章主要給大家介紹了關(guān)于Python進(jìn)階學(xué)習(xí)之特殊方法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起看看吧。2017-12-12pytorch實現(xiàn)查看當(dāng)前學(xué)習(xí)率
這篇文章主要介紹了pytorch實現(xiàn)查看當(dāng)前學(xué)習(xí)率,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06