91在线观看视频-91在线观看视频-91在线观看免费视频-91在线观看免费-欧美第二页-欧美第1页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

C語言printf函數(shù)族學(xué)習(xí)筆記

CHANBAEK ? 來源:非典型技術(shù)宅 ? 作者:非典型技術(shù)宅 ? 2023-11-24 11:15 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

printf 函數(shù)族

絮絮叨叨

printf 應(yīng)該是學(xué)習(xí)C語言的第一個函數(shù),我們都知道它是用于字符串格式化輸出的。但是它的用法你真正了解了嗎?

printf 系列函數(shù)不僅僅可用用來打印字符串到控制臺,還可以向其他標(biāo)準(zhǔn)IO或者數(shù)組中格式化輸出。

01

printf 函數(shù)族簡介

printf 函數(shù)是定義在 stdio.h 中的函數(shù),屬于C標(biāo)準(zhǔn)庫。不同編譯器實(shí)現(xiàn)過程不同,在這并不會詳細(xì)描述它的底層實(shí)現(xiàn)原理。只針對printf函數(shù)族的使用。

printf 函數(shù)族共有8個函數(shù):

圖片

其中8個函數(shù)可分為兩大類,每一類中都有一個相互對應(yīng)。例如:printf 和 vprintf 兩個函數(shù)為一對。其功能完全一樣,不同點(diǎn)在于參數(shù)格式。

printf函數(shù)參數(shù)使用不定參數(shù)(...)傳遞參數(shù),vprintf 使用參數(shù)列表(va_list) 傳遞參數(shù)。

02

printf 函數(shù)族功能介紹

int printf (const char ** * _format, ...);**

printf是我們使用最多的一個函數(shù),其功能為把格式化之后的字符串輸出到標(biāo)準(zhǔn)輸出流中。

大多數(shù)時候標(biāo)準(zhǔn)輸出是控制臺的顯示,不過在MCU中,我們經(jīng)常會將標(biāo)準(zhǔn)輸出重定向到串口,然后通過串口查看信息。

所有printf函數(shù)族的返回值是:寫入字符串成功返回寫入的字符總數(shù),寫入失敗則返回一個負(fù)數(shù)。

int sprintf (char * _s, const char * _format, ...);

sprintf 功能與printf 類似,不過它是將字符串格式化輸出到它的第一個參數(shù)所指定的字符數(shù)組中。

由于它是輸出到字符數(shù)組,則存在數(shù)組大小不足或者傳遞參數(shù)非法,導(dǎo)致格式化后的字符溢出的情況,導(dǎo)致緩沖區(qū)后面的棧/堆數(shù)組被修改。

更推薦使用 snprintf 函數(shù)代替 sprintf 函數(shù)。

int fprintf (FILE _s, const char * _format, ...); *

fprintf 功能與printf 類似,但它的輸出是流(FILE *) 中。這個流可以是標(biāo)準(zhǔn)輸出(stdout)、標(biāo)準(zhǔn)錯誤(stderr)或者文件 (FILE *fd)。

也就是說 fprintf 可以直接向系統(tǒng)中文件格式化輸出字符串。

int snprintf (FILE _s,size_t size, const char * _format, ...); *

snprintf 是 sprintf 的升級版,它解決了 sprintf 可能存在的緩沖區(qū)溢出問題。

它的第一個參數(shù)和 sprintf 一樣,指定了一個字符數(shù)組存放格式化后的字符串,不過在它的第二個參數(shù)中指定了緩沖區(qū)數(shù)組的大小。

如果格式化字符串超過緩沖區(qū)數(shù)組大小,則進(jìn)行截?cái)啵霾糠植贿M(jìn)行輸出。

03

printf 參數(shù)

接下來是本次的重點(diǎn):格式化輸出的參數(shù)。

printf 函數(shù)族的格式化參數(shù)屬性相同,下面以 printf 為例講解字符串格式屬性。

printf 格式化控制屬性格式如下:

%[flags][width][.prec][length]type

%[標(biāo)志][最小寬度][.精度][類型長度]類型

1. type(類型)

type 是格式控制字符的類型,為必選項(xiàng)。在 printf 中會根據(jù)類型對應(yīng)的格式去棧中讀取對應(yīng)大小的數(shù)據(jù),務(wù)必保證參數(shù)類型和參數(shù)的數(shù)據(jù)類型保持一致。

type 支持的類型如下所示:

圖片

2. flags(標(biāo)志)

flags 用于規(guī)定輸出樣式。例如我們有時需要對其打印多個數(shù)字,但是數(shù)組長度并不是固定的,此時可以使用flag參數(shù)進(jìn)行設(shè)置。

例如:左對齊打印四個數(shù)字,1,12,123,1234。

圖片

flag 支持參數(shù)如下:

圖片

3. number(寬度)

字符寬度有固定和可變兩種類型。固定寬度為在類型前面加一個數(shù)字表示寬度:

printf("num is %8dn",1234);

可變寬度類型是指在格式化的寬度可由一個變量來指定,在程序中使用一個星號(*)進(jìn)行占位,然后在參數(shù)中指定寬度。

printf("num is %*dn",8,1234);

圖片

4. precision(精度)

精度的屬性格式只有一個,對不同類型的效果不同。具體描述見下圖:

圖片

精度的屬性常用在格式化浮點(diǎn)數(shù)時使用:

printf("float : %2.3fn",1.23);

輸出結(jié)果為:float : 1.230

5. length(類型長度)

類型長度用于修飾type(類型)的長度。比如在打印一個 uint64_t 類型的無符號整形數(shù)字時,應(yīng)該使用%llu來進(jìn)行格式化輸出。

其中l(wèi)l為修飾類型的長度為long long 的整形。

圖片

04

結(jié)語

printf 函數(shù)族是標(biāo)準(zhǔn)輸入輸出庫中的標(biāo)準(zhǔn)輸出部分,其還有一個更加強(qiáng)大 scanf 函數(shù)族,這個就留給后面有時間在來寫了~

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • C語言
    +關(guān)注

    關(guān)注

    180

    文章

    7632

    瀏覽量

    141639
  • 字符串
    +關(guān)注

    關(guān)注

    1

    文章

    590

    瀏覽量

    22241
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4379

    瀏覽量

    64833
  • Printf
    +關(guān)注

    關(guān)注

    0

    文章

    84

    瀏覽量

    14232
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點(diǎn)推薦

    C語言回調(diào)函數(shù)學(xué)習(xí)

    對指針的應(yīng)用是C語言編程的精髓所在,而回調(diào)函數(shù)就是C語言里面對函數(shù)指針的高級應(yīng)用。簡而言之,回調(diào)
    發(fā)表于 05-27 09:44 ?7298次閱讀

    c語言printf()輸出格式大全

    c語言printf()輸出格式大全,簡潔明了,適合新手觀看
    發(fā)表于 06-23 18:14 ?8次下載

    C語言學(xué)習(xí)筆記之?dāng)?shù)據(jù)類型

    學(xué)習(xí)C語言時的筆記
    發(fā)表于 12-17 16:04 ?1次下載

    C語言學(xué)習(xí)筆記之九條語句

    學(xué)習(xí)C語言時基本語句的筆記
    發(fā)表于 12-17 16:04 ?7次下載

    C語言學(xué)習(xí)數(shù)組的筆記

    C語言學(xué)習(xí)數(shù)組的筆記
    發(fā)表于 12-17 16:04 ?0次下載

    實(shí)現(xiàn)重定向printf()和scanf() 函數(shù)案例分析

    要想printf()和scanf() 函數(shù)工作,我們需要把printf()和scanf() 重新定向到串口中。重定向是指用戶可以自己重寫C 的庫函數(shù)
    發(fā)表于 06-23 08:26 ?9682次閱讀
    實(shí)現(xiàn)重定向<b class='flag-5'>printf</b>()和scanf() <b class='flag-5'>函數(shù)</b>案例分析

    如何學(xué)習(xí)c語言C語言學(xué)習(xí)筆記資料免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是如何學(xué)習(xí)c語言C語言學(xué)習(xí)筆記資料免費(fèi)下載內(nèi)容包括了:
    發(fā)表于 10-17 16:23 ?66次下載

    C語言學(xué)習(xí)記錄筆記需要的趕緊下載學(xué)習(xí)

    本文檔的主要內(nèi)容詳細(xì)介紹的是C語言學(xué)習(xí)記錄筆記需要的趕緊下載學(xué)習(xí)
    發(fā)表于 02-12 08:00 ?7次下載
    <b class='flag-5'>C</b><b class='flag-5'>語言學(xué)習(xí)</b>記錄<b class='flag-5'>筆記</b>需要的趕緊下載<b class='flag-5'>學(xué)習(xí)</b>

    C語言學(xué)習(xí)的相關(guān)筆記資料免費(fèi)下載

    本文檔的主要內(nèi)容詳細(xì)介紹的是C語言學(xué)習(xí)的相關(guān)筆記資料免費(fèi)下載。
    發(fā)表于 04-16 08:00 ?16次下載
    <b class='flag-5'>C</b><b class='flag-5'>語言學(xué)習(xí)</b>的相關(guān)<b class='flag-5'>筆記</b>資料免費(fèi)下載

    C語言printf格式化輸出的實(shí)例詳細(xì)資料說明

    printfC語言非常有用的一個函數(shù),也是我們?nèi)腴T學(xué)習(xí)C
    的頭像 發(fā)表于 02-24 10:53 ?5235次閱讀

    《51單片機(jī)筆記》keilC51軟件中printf函數(shù)內(nèi)部機(jī)制詳解,單片機(jī)中怎么使用printf函數(shù)printf函數(shù)編寫程序例子及

    printf函數(shù)的講解
    發(fā)表于 11-20 16:51 ?11次下載
    《51單片機(jī)<b class='flag-5'>筆記</b>》keilC51軟件中<b class='flag-5'>printf</b><b class='flag-5'>函數(shù)</b>內(nèi)部機(jī)制詳解,單片機(jī)中怎么使用<b class='flag-5'>printf</b><b class='flag-5'>函數(shù)</b>,<b class='flag-5'>printf</b><b class='flag-5'>函數(shù)</b>編寫程序例子及

    通過串口利用printf函數(shù)輸出數(shù)據(jù)

    一。printf函數(shù)格式printf函數(shù)具有強(qiáng)大的輸出功能%表示格式化字符串輸出目前printf支持以下格式的輸出,例如:
    發(fā)表于 12-28 19:11 ?11次下載
    通過串口利用<b class='flag-5'>printf</b><b class='flag-5'>函數(shù)</b>輸出數(shù)據(jù)

    STM32中串行通訊中printf函數(shù)的使用

    由于最近使用到了串口屏,而它與STM32之間的連接是通過單片機(jī)之間的串行通訊實(shí)現(xiàn)的,具體而言我利用printf函數(shù)給串口屏發(fā)送數(shù)據(jù),而printf屬于C
    發(fā)表于 12-29 19:31 ?6次下載
    STM32中串行通訊中<b class='flag-5'>printf</b><b class='flag-5'>函數(shù)</b>的使用

    C語言和STM32學(xué)習(xí)的一些學(xué)習(xí)筆記

    自己總結(jié)的一些C語言和STM32F1學(xué)習(xí)的一些筆記,適合想快速了解學(xué)習(xí)C
    發(fā)表于 03-24 14:53 ?36次下載

    C語言-函數(shù)的可變形參(不定形參)

    這篇文章介紹C語言函數(shù)的不定參數(shù)、可變參數(shù) 形參,實(shí)現(xiàn)printf一樣的傳參效果。
    的頭像 發(fā)表于 08-14 09:58 ?3159次閱讀
    主站蜘蛛池模板: 精品一区二区三区免费爱 | 欧美日本一道免费一区三区 | 日韩在线免费看网站 | 日本特黄特色特爽大片老鸭 | 性叉叉| 禁漫羞羞入口 | 午夜综合网 | 最刺激黄a大片免费观看 | 免费的三及片 | 在线亚洲精品 | 欧美色网在线 | hs网站在线观看 | 狠狠色影院 | 77788色淫网站免费观看 | 天堂在线视频网站 | 中国同志chinese小彬tv | 欧美三级精品 | 日本成人免费在线视频 | 中文字幕一区二区三区 精品 | 美女扒开内裤无遮挡禁18 | 456性欧美欧美在线视频 | 91大神在线视频观看 | 一二三区在线观看 | 五月婷婷丁香在线观看 | 国产叼嘿网站免费观看不用充会员 | 手机看片精品国产福利盒子 | 男人女人真曰批视频播放 | h在线网站 | 亚洲成在人天堂一区二区 | 天堂资源站 | 天堂中文在线www | 欧美高清在线播放 | 天天干天天干天天色 | 四虎国产成人亚洲精品 | 伊人亚洲综合网成人 | 国产欧美另类第一页 | 欧美成人免费 | 自拍偷自拍亚洲精品被多人伦好爽 | 你懂的欧美| 国产一卡2卡3卡四卡精品网站 | 天天射天天怕 |