我试着运行这个程序在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
在*
在scanf()
格式意味着“读取数据,但不将其分配到参数列表中的变量”。 在上下文中,这意味着你可以输入:
18/07/2012
并获得一天(18),月(7)和今年(2012年)正确解释。 在格式字符串中的空间是至关重要的,复杂的事情。 通常情况下, %c
读取下一个字符,甚至一个空间,但周围的空格%*c
的转换说明处理的空白,因此代码需要一个非空字符消耗。
因此,观察到的行为,当你键入:
23 2 1991 3 5
在图2(其自身)通过所述第一消耗%*c
和3(自身)通过所述第二消耗。
这是标准C而不是用Turbo C的特殊功能(其指定的问题的第一版本,但问题已被编辑删除引用的Turbo C,因为我第一次写这个答案)。
在*
后%
在格式字符串表示的输入匹配的格式将被忽略(因此没有必要在一个指针传递给一个变量来存储匹配的值,你不打算使用)。
这意味着忽略该下一个字符,如空格, /
,或一个-
即在写入日期常见。
使用*
与scanf
抑制分配。 随后被丢弃的转换的结果。