C語言中printf()函數(shù)的全面介紹及用法(簡單易懂)
【說明】這是 C語言中的輸出函數(shù),當(dāng)然在 C++ 中也可以使用,只是有的需要改變一下形式,下面會(huì)提及,C++中一般使用 cout。(這里篇幅比較長,可以收藏一下哦)
一:頭文件
printf()函數(shù)的頭文件是 <stdio.h>。
二:格式控制字符串
格式控制字符串就是用雙引號(hào)括起來的字符串,包括三類:
1.格式字符。
格式字符是由 "%" 引導(dǎo),它是用來控制輸出字符的格式。有這個(gè)字符串時(shí),必須要保持輸出值參數(shù)表中的數(shù)量和類型格式與格式字符一致,否則輸出的值可能不是我們想要的。
| 格式字符說明 | |
| %c | 字符型 |
| %d | 十進(jìn)制數(shù) |
| %i | 讀入十進(jìn)制、八進(jìn)制、十六進(jìn)制數(shù),輸入的時(shí)候正常是十進(jìn)制,若輸入0前綴的數(shù)將讀入八進(jìn)制,0X前綴讀入16進(jìn)制 |
| %f | float型浮點(diǎn)數(shù) |
| %o | 八進(jìn)制 |
| %s | 字符串,碰到空格或回車結(jié)束 |
| %x | 16進(jìn)制 |
| %p | 指針 |
| %n | 至此已讀入值的等價(jià)字符數(shù) |
| %lf | double型浮點(diǎn)數(shù) |
2.轉(zhuǎn)義字符。
按照轉(zhuǎn)義后的含義輸出,比如 "\n" ,意思是輸出后換行。
3.普通字符。
意思是需要在輸出時(shí)原樣輸出的字符,比如下面代碼中的 "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()時(shí),下面的寫法肯定是錯(cuò)誤的,因?yàn)?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 類提供了一個(gè)成員函數(shù) c_str(),該函數(shù)返回一個(gè)指向以 null 結(jié)尾的字符數(shù)組的指針(即 C 風(fēng)格的字符串),這個(gè)數(shù)組包含了字符串的內(nèi)容。這個(gè)指針可以被 printf()函數(shù)接受。
【代碼如下】
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
string str="Hello World!";
printf("%s",str.c_str());
}
【輸出結(jié)果】

【說明】其實(shí)關(guān)于 std::string 中的 c_str()函數(shù),也有很多類似用處,比如——atoi()函數(shù),atoi()函數(shù)可以將字符串轉(zhuǎn)化成 int 型整數(shù),這在字符串相關(guān)問題中是比較常用的,還是掌握一下比較好,具體的可以點(diǎn)進(jìn)我的主頁中,里面的一篇文章詳細(xì)介紹了這個(gè)函數(shù)以及其他字符串中常用的函數(shù)。當(dāng)轉(zhuǎn)換 std::string 類型的字符串時(shí)就要用 c_str()函數(shù)。
四:還可以指定輸出數(shù)據(jù)的指定數(shù)據(jù)寬度和小數(shù)位數(shù),即 %m.nf。
1.其中 m 表示輸出數(shù)據(jù)的寬度,即占 m 列,n 表示小數(shù)點(diǎn)后保留 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ù)前有兩個(gè)空格,還有換行。(還有 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 前面加上一個(gè)負(fù)號(hào),可以讓輸出的數(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 時(shí),用于輸出 long double 型數(shù)據(jù)。
2.字母 i 修飾字符 d、u、o、x 時(shí),用于輸出 long 型數(shù)據(jù)。
3.字母 h 修飾字符d、o、x 時(shí),用于輸出 short 型數(shù)據(jù)。
4.還有上面提到的 輸出域?qū)抦、顯示精度n、(m、n都是整數(shù)),以及減號(hào) -(輸出數(shù)字或字符 ,在域內(nèi)向左靠)。
六:printf()函數(shù)的返回值
這個(gè)其實(shí)用的并不多,也可以了解一下。
printf()函數(shù)返回值 int型,也就是說在進(jìn)行嵌套使用時(shí),它的打印格式是 %d。它返回的內(nèi)容就是打印字符的個(gè)數(shù)。下面會(huì)舉兩個(gè)例子來說明。
【樣例一】
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
printf("%d",printf("%d",printf("%d",54)));
return 0;
}【輸出結(jié)果】

先輸出54,因?yàn)?printf("%d,54)打印出來的是兩個(gè)字符,所以 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é)果】

這個(gè)和上面的差不多,只是 %d 后面有了一個(gè)空格,所以導(dǎo)致輸出了 “54 3 2 ”。
總結(jié)
到此這篇關(guān)于C語言中printf()函數(shù)的全面介紹及用法的文章就介紹到這了,更多相關(guān)C語言中printf()函數(shù)用法內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python list刪除元素時(shí)要注意的坑點(diǎn)分享
下面小編就為大家分享一篇python list刪除元素時(shí)要注意的坑點(diǎn)分享,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-04-04
Python中 pickle 模塊的 dump() 和 load()&
Python 的 pickle 模塊用于實(shí)現(xiàn)二進(jìn)制序列化和反序列化,一個(gè)對(duì)象可以被序列化到文件中,然后可以從文件中恢復(fù),這篇文章主要介紹了Python中 pickle 模塊的 dump() 和 load() 方法詳解,需要的朋友可以參考下2022-12-12
淺談pytorch卷積核大小的設(shè)置對(duì)全連接神經(jīng)元的影響
今天小編就為大家分享一篇淺談pytorch卷積核大小的設(shè)置對(duì)全連接神經(jīng)元的影響,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-01-01
使用numpy實(shí)現(xiàn)topk函數(shù)操作(并排序)
這篇文章主要介紹了使用numpy實(shí)現(xiàn)topk函數(shù)操作(并排序),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-05-05
python控制臺(tái)實(shí)現(xiàn)tab補(bǔ)全和清屏的例子
今天小編就為大家分享一篇python控制臺(tái)實(shí)現(xiàn)tab補(bǔ)全和清屏的例子,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-08-08
Python3 Post登錄并且保存cookie登錄其他頁面的方法
今天小編就為大家分享一篇Python3 Post登錄并且保存cookie登錄其他頁面的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-12-12
python網(wǎng)絡(luò)爬蟲之協(xié)程的實(shí)現(xiàn)方法
這篇文章主要介紹了python網(wǎng)絡(luò)爬蟲之協(xié)程的實(shí)現(xiàn)方法,協(xié)程Coroutine又稱微線程,是一種用戶態(tài)內(nèi)的上下文切換技術(shù),簡而言之,就是通過一個(gè)線程實(shí)現(xiàn)代碼塊相互切換執(zhí)行,需要的朋友可以參考下2023-08-08

