%* C中的scanf() - 这是什么意思?(%*c in scanf() - what does

2019-07-30 11:37发布

我试着运行这个程序在Turbo C,但无法破译的输出。 这是什么%*c是什么意思? 任何帮助,将不胜感激。

int dd,mm,yy;
printf("\n\tEnter day,month and year");
scanf("%d %*c %d %*c %d",&dd,&mm,&yy);  // what does %*c mean ?
printf("\n\tThe date is : %d %d %d",dd,mm,yy);

OUTPUT

Enter day, month and year 23
2
1991
3
5
The date is: 23 1991 5

Answer 1:

*scanf()格式意味着“读取数据,但不将其分配到参数列表中的变量”。 在上下文中,这意味着你可以输入:

18/07/2012

并获得一天(18),月(7)和今年(2012年)正确解释。 在格式字符串中的空间是至关重要的,复杂的事情。 通常情况下, %c读取下一个字符,甚至一个空间,但周围的空格%*c的转换说明处理的空白,因此代码需要一个非空字符消耗。

因此,观察到的行为,当你键入:

23 2 1991 3 5

在图2(其自身)通过所述第一消耗%*c和3(自身)通过所述第二消耗。

这是标准C而不是用Turbo C的特殊功能(其指定的问题的第一版本,但问题已被编辑删除引用的Turbo C,因为我第一次写这个答案)。



Answer 2:

*%在格式字符串表示的输入匹配的格式将被忽略(因此没有必要在一个指针传递给一个变量来存储匹配的值,你不打算使用)。



Answer 3:

这意味着忽略该下一个字符,如空格, / ,或一个-即在写入日期常见。



Answer 4:

使用*scanf抑制分配。 随后被丢弃的转换的结果。



文章来源: %*c in scanf() - what does it mean?
标签: c scanf