「C語言簡單記」基於我之前學習過程當中作過的筆記、隨筆,特地整理了一下,只是簡單的記錄了一些比較重要的知識點,不會去深刻探究,面向的是一些有語言基礎的人查找閱讀,還請見諒,謝謝~~~函數
當初仍是小白的我剛接觸C語言,那時候什麼都不懂,printf和scanf傻傻分不清楚
.想一想當初好傻好天真,哈哈哈!(賣的一手好萌)學習
printf的格式控制的完整格式:code
"% - 0 m.n l或h 格式字符"開發
下面對組成格式說明的各項加以說明:字符串
%:表示格式說明的起始符號,不可缺乏。博客
-:有-表示左對齊輸出(右側補空格),如省略表示右對齊輸出(左側補空格)。table
0:有0表示指定空位填0,如省略表示指定空位不填。基礎
m.n:m指域寬,即對應的輸出項在輸出設備上所佔的字符數。N指精度。用於說明輸出的實型 數的小數位數。對數值型的來講,未指定n時,隱含的精度爲n=6位。變量
l或h:l對整型指long型,對實型指double型。h用於將整型的格式字符修正爲short型。數據類型
格式字符(格式字符用以指定輸出項的數據類型和輸出格式)
d格式:用來輸出十進制整數。有如下幾種用法:
%d %hd %ld
o格式:以無符號八進制形式輸出整數
x格式:以無符號十六進制形式輸出整數
f格式:用來輸出實數(包括單精度,雙精度),以小數形式輸出
u格式:以無符號十進制形式輸出整數
c格式:輸出一個字符
s格式:用來輸出一個串。有幾中用法
%s:例如:printf("%s","CHINA")輸出"CHINA"字符串(不包括雙引號)。 %ms:輸出的字符串佔m列,如字符串自己長度大於m,則突破獲m的限制,將字符串所有輸出。若串 長小於m,則左補空格。 %-ms:若是串長小於m,則在m列範圍內,字符串向左靠,右補空格。 %m.ns:輸出佔m列,但只取字符串中左端n個字符。這n個字符輸出在m列的右側,左補空格,注 意:若是n未指定,默認爲0。 %-m.ns:其中m、n含義同上,n個字符輸出在m列範圍的左側,右補空格。若是n>m,則自動取n值,即保證n個字符正常輸出,注意:若是n未指定,默認爲0。 若是是sprintf(desc, "%m.ns", sour); 若是desc空間夠的話,會在%m.ns 串 的結尾自動補null 字符,不一樣於strncpy。 例如 :sprintf(desc, "%.3s", "123456"); desc若是空間>=4字節的話,第4個字節將是null字 符。
%f:不指定寬度,整數部分所有輸出並輸出6位小數。
// 默認輸出6位小數 printf("%f", 3.1415926535f); 輸出結果: 3.141593
指定保留多少位小數
// 經過%.nf方式,指定保留多少位小數 printf("%.2f", 3.1415926535f); 輸出結果: 3.14
對於單精度數,使用%f格式符輸出時,僅前7位是有效數字,小數6位.
對於雙精度數,使用%lf格式符輸出時,前15位是有效數字,小數6位
進制 | float | double |
---|---|---|
十進制有效位數 | 7位 | 15位 |
二進制有效位數 | 24位 | 53位 |
一個練習引起的血案
要求輸出3.1415926535f全部小數
// 嘗試經過指定保留位數 printf("%.10f", 3.1415926535f); 輸出結果: 3.1415927410 // float有效數字是7位, 多餘位數則會顯示垃圾數據(不許確) // 什麼是有效位? printf("%.10f", 314159.26535f); 輸出結果: 314159.2500000000
// 嘗試指定寬度 printf("%12f", 3.1415926535f); 輸出結果: $$$$3.141593 注意$表明空格
// 嘗試指定寬度和保留位數 printf("%12.10f", 3.1415926535f); 輸出結果: 3.1415927410
// 要想完整輸出必須使用double, 由於double類型精度小數點後6位,有效數字是15位 double doubleValue = 3.1415926535; // 注意後面沒有f printf("%.10lf", doubleValue); 輸出結果:3.1415926535
格式 | 意義 |
---|---|
d | 輸入一個十進制整數 |
o | 輸入一個八進制整數 |
x | 輸入一個十六進制整數 |
i | 輸入一個有符號或無符號的十進制、八進制、十六進制整數 |
u | 輸入一個無符號十進制整數 |
f 、e或E、 g或G | 輸入一個小數形式或指數形式的浮點數 |
c | 輸入一個字符 |
s | 輸入一個字符串 |
獲取整形數據
// 1.定義變量用於接收輸入數據 int num = 0; // 2.利用scanf函數接收用戶輸入數據 scanf("%d", &num); // 3.打印驗證結果 printf("num = %d", num);
獲取實數型數據
// 1.定義變量用於接收輸入數據 float num = 0; // 2.利用scanf函數接收用戶輸入數據 scanf("%f", &num); // 3.打印驗證結果 printf("num = %d", num);
注:不加\n,須要加&取地址
非法的輸入
除"空格","回車","tab"以外, 若是輸入的數據和scanf接收的數據不匹配將會自動結束接收
更多關於iOS學習開發的文章請登錄個人我的博客www.zhunjiee.com,歡迎前來參觀學習