printf 打印字符串的任意一部分




使用printf()函數打印字符串的任意部分,請看下例:

  1. <span style="font-size:16px;">#include <stdio.h>  
  2. #include <stdlib.h>  
  3. #include <string.h>  
  4.   
  5. int main()  
  6. {  
  7.     char * source_str = "THIS IS THE SOURCE STRING" ;  
  8.   
  9.     /* Use printf() to print the first 11 characters of source_str. */  
  10.     printf("First 11 characters: ' %11.11s'\n" , source_str);  
  11.   
  12.     /* Use printf() to print only the last 13 characters of source _str. */  
  13.     printf("Last 13 characters:'%13.13s'\n", source_str+(strlen(source_str)-13));  
  14. }</span>  

輸出結果為:    
First 11 characters: 'THIS IS THE'    
Last 13 characters:'SOURCE STRING'

在上例中,第一次調用printf()函數時,通過指定參數"%11.11s",迫使printf()函數只打印11個字符的長度,因為源字符串的長度大於11個字符,所以在打印時源字符串將被截掉一部分,只有頭11個字符被打印出來。第二次調用printf()函數時,它將源字符串的最后13個字符打印出來,其實現過程為:
(1)用strlen()函數計算出source_str字符串的長度,即strlen(source_str)。
(2)將source_str的長度減去13(13是將要打印的字符數),得出source_str中剩余字符數。
(3)將strlen(source_str)-13和source_str的地址相加,得出指向source_str中倒數第13個字符的地址的指針;即source_str+(strlen(source_str)-13)。這個指針就是printf()函數的第二個參數。
(4)通過指定參數“%13.13s”,迫使printf()函數只打印13個字符的長度,其結果實際上就是打印源字符串的最后13個字符。

 

關於“S格式符”的用法的簡單說明:

(1) %ms :輸出的字符串占m列,如果字符串本身長度大於m,則突破m的限制,將字符串全部輸出;若串長度小於m,則在左邊補空格。
 (2) %-ms:如果字符串長度小於m,則在m列范圍內,字符串向左靠,右補空格。
 (3) %m.ns:輸出占m列,但只取字符串中左端n個字符。這n個字符輸出在m列范圍的右側,左補空格。
 (4) %-m.ns:其中的m、n的含義同上,n個字符輸出在m列范圍的左側,右補空格。如果n>m,則m自動取n值,即保證n個字符正常輸出。


免責聲明!

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



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