🐎作者的話
如果你搜索輸入輸出函數,那么你會看到輸入輸出流、Turbo標準庫、標準輸出端、stdout什么什么亂七八糟的,作為一個萌新,哪懂這些?
本文介紹萌新在前期的學習中,常用的輸入輸出函數及其功能~
函數原型: int printf(參數1,參數2,參數3,參數4,參數~,參數n)
這就是對于我們萌新來說的函數原型,有許許多多的參數,返回值是int類型。
參數1: 參數1是一個字符串,printf會打印這個字符串,你可以直接用雙引號引著放進去,也可以存在一個字符數組里,然后把數組的首地址放進去,像這樣:
int main()
{printf("太陽出來我曬太陽!!!");
char str[] = "月亮出來我曬月亮嘍~";
printf(str);
return 0;
}
運行效果圖:
可以看到,兩個字符串都被打印了。
但是,我們可能要打印我們自己也不知道是多少的變量,這要怎么辦呢?
這時候,就需要在參數1的str中加入一些控制符,即"%"加一個或兩個字母,在str中每多了一個"%"加字母的組合,后面就要多一個參數,至于這個字母,根據輸出變量的類型不同,字母也會不同。
常見字母請看以下表格:
%字母 | 對應變量類型 |
---|---|
%d | signed int |
%u | unsigned int |
%o | 八進制unsigned int |
%x(%X) | 十六進制unsigned int |
%c | char |
%s | string(字符串) |
%p | 地址(指針) |
%f | float |
%lf | double |
%e(%E) | 以指數表示的浮點型 |
注意: 不是說某種類型只能用某種控制符輸出,而且會把你一會放在后面的參數,當成這種控制符對應的類型輸出。
比如說: 你用%u輸出了一個signed型的數,那么計算機在讀取這個數時,會把它當成unsigned來讀取。
為了應對各種不同的情況,在"%"和字母之間,會選擇性地加入三個參數,這三個參數分別叫做標識、寬度、.精度。
其中,標識必須緊挨在"%"的右邊,寬度緊挨在標識的右邊,.精度在寬度和字母的中間(精度前面有一個小小的點,這不是博主手誤哦,真正存在的),像這樣:
int main()
{printf("%標識寬度.精度d" );
return 0;
}
寬度介紹int main()
{int a = 12;
printf("%5d",a );
return 0;
}
效果圖:
可以看到,被灰色框起來的,就是寬度為5。
那么星號,就是為了應對不知道該輸出多寬的數據,以一個參數變量當作數據的寬度,如果寫了星號,在后面加入變量時要多一個,而且必須寫在第一位,像這樣:
int main()
{int a = 12;
printf("%*d",5,a );
printf("%*d", 10, a);
return 0;
}
效果圖:
精度要緊挨在字母的左邊,而且精度的左邊還要加上一個點。
在這個點的右邊,你可以寫一個數字或者一個星號,沒錯,和寬度一樣。
顧名思義,是用來控制輸出數據的精度的,只是對于不同的控制符,有不同的效果。
PS:剛才說過,控制符就是一個%號加上一或兩個字母,不要忘了哦。
詳細效果:
1,對于%d(signed int)、%u(unsigned int)、%o(八進制unsigned int)、%x(十六進制unsigned int),這四個來說,是表示數據輸出的最小位數,像這樣:
int main()
{int a = 12;
printf("%.*d", 4, a);
return 0;
}
效果圖:
因為精度是4,所以至少輸出四位,不足則前導0補充。
精度不會縮小一個整數的輸出,像這樣:
int main()
{int a = 12345;
printf("%.*d", 4, a);
return 0;
}
效果圖:
2,對于%s(string)來說,精度的作用是控制輸出的大字符數,像這樣:
int main()
{char arr[]="123456";
int tmp = printf("%.3s",arr);
return 0;
}
效果圖:
接下來我們介紹最復雜的標識。
標識寫在緊挨在%的右邊,可以寫“-”、“+”、“#”、0,即減號,加號,井號,還有數字0。
和寬度配合使用,表示左對齊,如果不加減號,默認右對齊,像這樣:
int main()
{int a = 42;
printf("%10d",a);
printf("%-10d", a);
return 0;
}
打印結果如下:
可見,兩者寬度都是10,但一個向左對齊,一個向右對齊。
寫上加號,即使是正數,也會顯示一個"+",像這樣:
int main()
{int a = 42;
printf("%+d",a);
return 0;
}
效果圖:
如果不寫這個加號,只有負數會顯示負號,正數不顯示加號。
眾所周知(即使是萌新也應該知道),八進制要前導0,十六進制前導0x,二進制前導0b,井號的作用就是顯示八進制和十六進制的前導標志,像這樣:
int main()
{int a = 0x00001234;
printf("%#x",a);
printf("\n");
printf("%x", a);
return 0;
}
}
效果圖:
如圖,加了井號的顯示了前導標志。
數字0和寬度配合使用,它可以讓數據的前面不再補充空格,反而補充0,像這樣:
int main()
{int a = 555;
printf("%10d", a);
printf("\n");
printf("%010d", a);
return 0;
}
效果圖:
在寬度前面多加一個0,就能讓它補充0了。
前面我們說到,printf函數的返回值是一個int類型的數,這個數是printf函數打印出來的字符數,如果沒能成功打印,就返回一個負數,像這樣:
int main()
{int a = 1234;
int tmp = printf("%010d", a);
printf("\n");
printf("%d", tmp);
return 0;
}
效果圖:
可以看到,我們打印了十個字符,那么它的返回值就是10。
以下五個練習,你能寫出打印內容嗎?
int a=15; printf("%#x", a);
int a=4; printf("%10.*d", a, a);
int a=4; printf("%u",a);
int a = 6; printf("%-*d",a,a);
int a = 8; printf("%+.*d",a,a);
你是否還在尋找穩定的海外服務器提供商?創新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧
文章題目:C語言萌新如何使用printf函數?-創新互聯
文章網址:http://m.newbst.com/article34/dpecse.html
成都網站建設公司_創新互聯,為您提供App開發、自適應網站、域名注冊、響應式網站、標簽優化、靜態網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯