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

沒有對齊的輸出
程序定義了一個容納20個數字的數組,然後利用兩個for循環將20個數字以四行五列的格式進行輸出,雖然我們在printf的格式說明符%d的前面已經敲了一個空格,防止了數據緊密地挨着,但是,很難看出這是一個四行五列的格式。這裡我們就需要字段寬度修飾符,請看下面修改之後的程序:

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

左對齊
加了左對齊的標誌之後,程序輸出就變得非常友好了。這是字段寬度修飾符的作用,字段精度修飾符用於輸出小數時的格式化。比如限制小數位數、指定小數以科學計數法顯示等。如下圖:

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

不帶有字段寬度修飾符的程序
可以看到即使用戶輸入四位數,程序也將按照四位進行讀取,不利於程序的穩定運行,但是只要在%d之間加上字段寬度修飾符,不管你輸入幾位,scanf將只讀取前兩位數:

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

兩者的返回值程序
可以看出,printf返回了7個中文佔用的字節數14,scanf返回了讀取成功的項目數2。
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/284422.html
微信掃一掃
支付寶掃一掃