摘自:https://blog.csdn.net/eddie_cm/article/details/79859588

前言
最近在看”Linux程序设计”这本书,书中扫描目录章节的代码示例出现了”%*s”,当时不知何意,经查阅资料后,特来整理一下

正文
“%*s”可以被用在printf和scanf系列函数中,在这两种函数中的含义各不相同

printf
在printf系列函数中,”%s”主要是对字段限定符的补充.一般来说,若想要对一个字符串进行字段限定,可以在”%s”的中间加上数字,例如”%10”.但问题是这个数字只能是常数,若想要在程序运行期间改变字段限定的方式则会很麻烦,而”%*s”则可以添加一个形参代替”“的位置,实现动态输出

printf("%10s\n","hello"); //输出" hello"
printf("%*s\n",10,"hello"); //同上
printf("%*s%s\n",10,"","hello"); //也可以采用这种方式在字符串"hello"前面固定输出10个空格

scanf

在scanf系列函数中,”%*s”用于忽略指定类型的输入的值,使其不会被参数所获取

//例:输入abc123 def456
//第一种情况,正常输入
scanf("%s%s",str1,str2);
printf("%s\n%s\n", str1, str2);

//输出:
abc123
def456

//第二种情况,加"*"
scanf("%*s%s",str1);
printf("%s\n%s\n", str1, str2);

//输出:

def456

 

补充
事实上,星号”*”可以应用于几乎所有转换控制符而不仅仅是字符串类型.也就是说,不论是数值,字符,字符串类型都可以使用其达成一些特殊功用

原文地址:http://www.cnblogs.com/LiuYanYGZ/p/16897465.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性