最近在看《C Primer Plus(第五版)》,有这么一行代码:
scanf("%*s");//书中解释作用是跳至下一空白符
本文对网上的一些解释进行汇总整理,主要参考的网址有:
[1]http://bbs.csdn.net/topics/390389078
[2]https://zhidao.baidu.com/question/526983012.html
[3]https://zhidao.baidu.com/question/475547421.html
* 是scanf()函数中的一种修饰符(《C Primer Plus(第五版)》P79),表示滞后赋值,通俗理解为输入项输入后不转送给任何数据。
%s表示从缓冲区读入一个字符串,遇到空格或者回车就结束。
这里表示当前的一个字符串输入后不送给任何变量,跳到下一个空白处(包括空格、回车等)
scanf("%*s",str);//*在这里为跳过的意思,意为把从键
//盘输入的字符串忽略掉,不放入变量str中!
举个具体例子:
int n;
scanf("%*d %*d %d",&n);
printf("%d",n);
return 0;
//输入的是1 2 3,那么输出的是3,因为前两个已经忽略啦。