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

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

最新文章

  1. Nginx搭建反向代理服务器过程详解
  2. BW知识问答锦集2
  3. 狗日的js的闭包
  4. Java--时间处理
  5. 【积硅计划】http协议基础
  6. C#教程之打印和打印预览
  7. WebForm 分页与组合查询
  8. SuperWebClient -一个基于CURL的.NET HTTP/HTTPS模拟神组件(1)
  9. TCP/IP NAT知识梳理
  10. python3编码
  11. Mysql TIMESTAMPDIFF测试
  12. lnmp使用socket方式连接nginx优化php-fpm性能
  13. 03抽象工厂模式AbstractFactory
  14. pycharm的安装和使用
  15. python+selenium win32gui实现文件上传 enumerate()
  16. Jmeter 处理Unicode编码转为中文
  17. Python subprocess- call、check_call、check_output
  18. linux开放关闭防火墙端口
  19. 关于单一网络适配器拓扑TMG
  20. 如何用ABAP代码读取CDS view association的数据

热门文章

  1. Context的正确使用
  2. python值函数名的使用以及闭包,迭代器
  3. Sqoop 产生背景(一)
  4. JAVA FORK JOIN EXAMPLE--转
  5. ubuntu 安装redis以及phpredis
  6. Android O Bitmap 内存分配
  7. ORA-02068,ORA-03135错误解决方法
  8. jQuery——链式编程与隐式迭代
  9. VHDL_ADC之cic_diffcell
  10. ProE复杂曲线方程:Python Matplotlib 版本代码(L系统,吸引子和分形)