linux c語言的格式化輸入輸出

2021-07-15 04:25:29 字數 2716 閱讀 7744

對於linux c語言來說,格式化輸入輸出是很重要的,錯誤的輸入輸出格式可能導致你看不到自己想要的資料,比如當你想要顯示字串時,你在printf裡卻用了%d,結果是你看到的是字串的ascii碼,要想看字串內容,你應該使用%c,今天我們就來講講linux c語言格式化輸入輸出的標準,同樣我會把初學者經常犯的錯誤寫在前面。

注意:1、螢幕輸入可以用char rcode  scanf("%hhd",&rcode),注意取位址符號&不要忘了寫。

2、主函式結尾要加return 0,來表示程式是否執行成功,失敗返回0。

格式化輸入輸出字元有:

%d 帶符號十進位制整數

%o 無符號八進位制

%u 無符號十進位制

%x 無符號十六進製制

%f 顯示十進位制計數的浮點數

%e 指數形式顯示浮點數

%c  字元形式

%s  字串形式

%p  顯示基位址

檢視轉義字元可使用手冊  ---->  man ascii

八進位制  十進位制 十六進製制   目標字元

007   7     07    bel '\a' (bell)             

010   8     08    bs  '\b' (backspace)        

011   9     09    ht  '\t' (horizontal tab)  

012   10    0a    lf  '\n' (new line)         

013   11    0b    vt  '\v' (vertical tab)     

014   12    0c    ff  '\f' (form feed)        

015   13    0d    cr  '\r' (carriage ret)

char 字元變數 ---> ascii  ----> 本質是乙個整形變數(-128 ~ 127)

格式字元用以指定輸出項的資料型別和輸出格式。

①d格式:用來輸出十進位制整數。有以下幾種用法:

%d:按整型資料的實際長度輸出。

%md:m為指定的輸出欄位的寬度。如果資料的位數小於m,則左端補以空格,若大於m,則按實際位數輸出。

②o格式:以無符號八進位制形式輸出整數。對長整型可以用"%lo"格式輸出。同樣也可以指定字段寬度用「%mo」格式輸出。

例:main()

執行結果:-1,177777

程式解析:-1在記憶體單元中(以補碼形式存放)為(1111111111111111)2,轉換為八進位制數為(177777)8。

③x格式:以無符號十六進製制形式輸出整數。對長整型可以用"%lx"格式輸出。同樣也可以指定字段寬度用"%mx"格式輸出。

④u格式:以無符號十進位制形式輸出整數。對長整型可以用"%lu"格式輸出。同樣也可以指定字段寬度用「%mu」格式輸出。

⑤c格式:輸出乙個字元。

⑥s格式:用來輸出乙個串。有幾中用法

%s:例如:printf("%s", "china")輸出"china"字串(不包括雙引號)

補充:  sizeof()  計算目標占用的空間的大小   

strlen    計算可視的字串長度

字串儲存時,計算機自動在最後乙個位元組新增'\0'

%ms:輸出的字串佔m列,如果字串本身長度大於m,則突破獲m的限制,將字串全部輸出。若串長小於m,則左補空格。

%-ms:如果串長小於m,則在m列範圍內,字串向左靠,右補空格。

%m.ns:輸出佔m列,但只取字串中左端n個字元。這n個字元輸出在m列的右側,左補空格。

%-m.ns:其中m、n含義同上,n個字元輸出在m列範圍的左側,右補空格。如果n>m,則自動取n值,即保證n個字元正常輸出。

⑦f格式:用來輸出實數(包括單、雙精度),以小數形式輸出。有以下幾種用法:

%f:不指定寬度,整數部分全部輸出並輸出6位小數。

%m.nf:輸出共佔m列,其中有n位小數,若數值寬度小於m左端補空格。 

%-m.nf:輸出共佔m列,其中有n位小數,若數值寬度小於m右端補空格。

⑧e格式:以指數形式輸出實數。可用以下形式:

%e:數字部分(又稱尾數)輸出6位小數,指數部分佔5位或4位。

%m.ne和%-m.ne:m、n和」-」字元含義與前相同。此處n指資料的數字部分的小數字數,m表示整個輸出資料所佔的寬度。

⑨g格式:自動選f格式或e格式中較短的一種輸出,且不輸出無意義的零。

對於單精度數,使用%f格式符輸出時,僅前7位是有效數字,小數6位.

對於雙精度數,使用%lf格式符輸出時,前16位是有效數字,小數6位.

從 scanf 輸入    按開發者需要從輸入緩衝區取值

scanf("%d" , &j);

注意1:  

一般在獲取 %c 這個格式之前,需要先把之前緩衝區的內容給清除。

getchar() 是以字元為單位去取緩衝區的內容,返回值為得到的字元。

while(1)

*****====等價於**********== while(getchar() != '\n') ;

注意2:

關注scanf的返回狀態,以此初步判斷得到的資料是否符合要求

返回值表示成功獲取了幾個符合條件的值; 0表示獲取失敗

if(scanf("%d",&x) != 0)

else

注意3:

scanf怎麼寫 就怎麼輸入

scanf("%c,%c", &a, &b);  == 那就需要輸入 x,y 這樣的形式

scanf格式化輸入

scanf 函式的功能是從計算機預設的輸入裝置 一般指鍵盤 向計算機主機輸入資料。呼叫scanf 函式的一般格式如下 scanf 格式字串 輸入項位址表 例如 scanf d f i,f 其中,格式字串 可以包含三種型別的字元 格式指示符 空白字元 空格 跳格鍵 回車鍵 和非空白字元 又稱為普通字元...

scanf 格式化輸入

scanf 有種帶的格式化輸出方式 此格式控制符的基本格式為 scanfset includeint main 以下來自網路 scanfset 有兩種形式 一種是以非 字元開頭的 scanset 表示在讀入字串時將匹配所有在 scanfset 現的字元,遇到非scanfset 中的字元時輸入就結束 ...

C語言格式化輸入輸出

原創 2015年03月20日 20 08 32 printf 格式字串的一般形式 標誌 輸出最小寬度 精度 長度 型別 其中方括號 中的項為可選項。各項意義 1 型別 型別字元用以表示輸出資料的型別,其格式符和意義如下表所示 格式字元 意義d 以十進位制形式輸出帶符號整數 正數不輸出符號 o以八進位...