分享scanf函數返回值操作方法 scanf的返回值怎么輸出


分享scanf函數返回值操作方法 scanf的返回值怎么輸出

文章插圖
文章插圖
輸入輸出幾乎是每個C程序必須具備的功能,因為有了它們,程序才有了交互性 。C提供的輸入輸出函數除了具有必須的輸入輸出功能外,還有一些其他實用的小技巧,了解這些小技巧將會為程序帶來更友好的用戶體驗 。
一、printf字段寬度、精度修飾符
當我們要輸出類似表格形式的樣式時,我們會用到字段寬度修飾符 。它能夠讓printf函數的輸出更加規整 。我們先看下面的程序:
分享scanf函數返回值操作方法 scanf的返回值怎么輸出

文章插圖
分享scanf函數返回值操作方法 scanf的返回值怎么輸出

文章插圖
沒有對齊的輸出
程序定義了一個容納20個數字的數組,然后利用兩個for循環將20個數字以四行五列的格式進行輸出,雖然我們在printf的格式說明符%d的前面已經敲了一個空格,防止了數據緊密地挨著,但是,很難看出這是一個四行五列的格式 。這里我們就需要字段寬度修飾符,請看下面修改之后的程序:
分享scanf函數返回值操作方法 scanf的返回值怎么輸出

文章插圖
分享scanf函數返回值操作方法 scanf的返回值怎么輸出

文章插圖
對齊的輸出
可以看到,在%d之間加上字段寬度修飾符,我們的輸出變得好看多了,那么,為什么是7呢?因為7代表著輸出占用7個寬度的字段,而我們的數字最寬只有6個,所以7就足夠讓數據分隔開了 。默認是按照右對齊的方式排列的,如果想要左對齊,那么只需要再加一個左對齊的標志“-”即可,如下圖:
分享scanf函數返回值操作方法 scanf的返回值怎么輸出

文章插圖
分享scanf函數返回值操作方法 scanf的返回值怎么輸出

文章插圖
左對齊
加了左對齊的標志之后,程序輸出就變得非常友好了 。這是字段寬度修飾符的作用,字段精度修飾符用于輸出小數時的格式化 。比如限制小數位數、指定小數以科學計數法顯示等 。如下圖:
分享scanf函數返回值操作方法 scanf的返回值怎么輸出

文章插圖
分享scanf函數返回值操作方法 scanf的返回值怎么輸出

文章插圖
精度修飾符
從輸出來看,第一行是默認輸出格式,可以看到默認帶有6個小數位;第二行加了.2精度修飾符,限制了小數位為2位,可以看到輸出2位小數,并且按照四舍五入進行輸出;第三行加了“+”號標志,它能顯示變量的正負號,我們定義的變量是正數,所以顯示了一個加號,當然了,如果是負數,默認也是輸出負號的;第四行以科學計數法進行輸出,指數部分默認是以三位顯示,不足三位用0補齊;第四行是限制小數位數的輸出 。
二、scanf修飾符限制輸入位數
在scanf中添加字段寬度修飾符可以限制用戶輸入的數據寬度,即使用戶輸入的寬度超過需求,scanf也只會讀取指定寬度的數據,請看下面的程序:
分享scanf函數返回值操作方法 scanf的返回值怎么輸出

文章插圖
分享scanf函數返回值操作方法 scanf的返回值怎么輸出

文章插圖
不帶有字段寬度修飾符的程序
可以看到即使用戶輸入四位數,程序也將按照四位進行讀取,不利于程序的穩定運行,但是只要在%d之間加上字段寬度修飾符,不管你輸入幾位,scanf將只讀取前兩位數:
分享scanf函數返回值操作方法 scanf的返回值怎么輸出

文章插圖
分享scanf函數返回值操作方法 scanf的返回值怎么輸出

文章插圖
帶有字段寬度修飾符的程序
加上一個提示和小小的修飾符就能夠使得程序更加友好,不用復雜的驗證代碼,非常有利于簡單程序的驗證,減小程序體積,提高程序運行效率 。這里要注意中文的讀取,一個中文占用兩個字節位置,所以要限制讀取兩個中文,要指定寬度修飾符為4,如果是3將只讀取一個中文 。
三、printf、scanf函數的返回值
有沒有想過你經常使用的輸入輸出函數的返回值問題呢?其實它們都是有返回值的 。printf函數返回輸出的字節個數,scanf返回成功讀取項目的個數,如下圖:
分享scanf函數返回值操作方法 scanf的返回值怎么輸出

文章插圖
分享scanf函數返回值操作方法 scanf的返回值怎么輸出

文章插圖
兩者的返回值程序
【分享scanf函數返回值操作方法 scanf的返回值怎么輸出】可以看出,printf返回了7個中文占用的字節數14,scanf返回了讀取成功的項目數2 。