C語言中%*s,%*c 是什么意思(還有%*.*s)


在 scanf 和 printf 里效果是不一樣的。

在printf,動態控制顯示格式用的

printf("%*s",5,"123");
執行一下,這條語句,輸出
##123

(#代表一個空格)
類似於%5d 這樣的狀況
這里*被常量5代替,用於控制最小字符寬度,主要是針對,最小字符寬度未知的情況,當然*可以對應整型變量


在 scanf 里的意思,表示忽略要讀的項。比如 %*d 就是讀一個 %d 該讀的東西,但不賦值給任何變量。

scanf("%*d %*d %d", &n);
如果輸入2004 2005 2006
那么n=2006

 

關於%*.*s

 

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

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

也就是說,前面定義輸出總寬度,后面定義輸出字符個數。

舉例:

  1. #include <cstdio>  
  2. #include <iostream>  
  3.   
  4. int main()  
  5. {      
  6.     char *s = "this is test example";  
  7.     int a,b;  
  8.     printf("%.*s\n", 10, s);//這里的常量10就是給*號的,你也可以用一個變量來控制寬度  
  9.     printf("%*.*s\n", 20, 10, s);//常量20控制輸出所占位寬,也可以用一個變量控制  
  10.     std::cin>>a>>b; //輸入15 10  
  11.     printf("%*.*s\n", a, b, s);//輸出為:-----this is te  前面定義輸出總寬度,后面定義輸出字符個數
  12.     std::cin.get();  
  13.     std::cin.ignore();//暫停程序執行  
  14. }  

輸出結果為:

this is te

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

15  10 //輸入

-----this is te


免責聲明!

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



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