printf用法---printf輸出固定長度的字符


需要打印一個固定長度的字符

一般可以這么做:

  • void str_print(const char* str, unsigned int str_len)  
  • {  
  • int i=0;  
  • for (; i < str_len; i++)  
  •         printf("%c", str[i]);  
  •     printf("\n");  
  • }  


但是用一行代碼也可以搞定:

  printf("%.*s\n", str_len, str); 

 

printf一般用法:

ref : http://www.cnblogs.com/yuaqua/archive/2011/10/21/2219856.html

 

小數點.后“*”表示輸出位數,具體的數據來自參數表
printf格式字符串中,與寬度控制和精度控制有關的常量都可以換成變量,方法就是使用一個“*”代替那個常量,然后在后面提供變量給“*”。

同樣,小數點.前也可以添加*,也要用戶輸入一個位寬值來代替,表示輸出的字符所占位寬。

復制代碼
#include <cstdio>
#include <iostream>

int main()
{    
    char *s = "this is test example"; int a,b; printf("%.*s\n", 10, s);//這里的常量10就是給*號的,你也可以用一個變量來控制寬度 printf("%*.*s\n", 20, 10, s);//常量20控制輸出所占位寬,也可以用一個變量控制 std::cin>>a>>b; //輸入15 10 printf("%*.*s\n", a, b, s);//輸出為:-----this is te std::cin.get(); std::cin.ignore();//暫停程序執行 }
復制代碼

輸出結果為:

this is te

----------this is te//-代表空格

15 10 //輸入

-----this is te

注:printf的一般形式為printf("格式控制字符串",輸出列表),格式控制字符串形式為:[標志][輸出最小寬度][.精度][長度]類型。

其中方括號[]中的項為可選項。 各項的意義介紹如下:
1)類型:類型字符用以表示輸出數據的類型,其格式符和意義如下表所示:
d 以十進制形式輸出帶符號整數(正數不輸出符號)
o 以八進制形式輸出無符號整數(不輸出前綴 0)
x,X 以十六進制形式輸出無符號整數(不輸出前綴 Ox)
u 以十進制形式輸出無符號整數
f 以小數形式輸出單、雙精度實數
e,E 以指數形式輸出單、雙精度實數
g,G 以%f 或%e 中較短的輸出寬度輸出單、雙精度實數
c 輸出單個字符
s 輸出字符串
2)標志:標志字符為-、+、#、空格四種,其意義下表所示:
- 結果左對齊,右邊填空格
+ 輸出符號(正號或負號)
空格 輸出值為正時冠以空格,為負時冠以負號
# 對 c,s,d,u類無影響;對 o 類,在輸出時加前綴 o;對 x 類,在輸出時加前綴 0x;對 e,g,f 類當結果有小數時才給出小數點
3)輸出最小寬度:用十進制整數來表示輸出的最少位數。 若實際位數多於定義的寬度,則按實際位數輸出,若實際位數少於定義的寬度則補以空格或 0。
4)精度:精度格式符以“.”開頭,后跟十進制整數。本項的意義是:如果輸出數字,則表示小數的位數;如果輸出的是字符,則表示輸出字符的個數;若實際位數大於所定義的精度數,則截去超過的部分。
5)長度:長度格式符為 h,l 兩種,h 表示按短整型量輸出,l 表示按長整型量輸出。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM