scanf()中的%* c – 这是什么意思?
我试图在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
第一个%*c
消耗2(单独),第二个消耗3(单独)。
这是标准C,而不是Turbo C的特殊function(问题的第一版指定,但问题已被编辑,以便在我第一次写这个答案后删除对Turbo C的引用)。
格式字符串中的*
after %
表示将忽略与格式匹配的输入(因此无需传入指向变量的指针来存储您不会使用的匹配值)。
它意味着忽略下一个字符,例如空格, /
或-
在书面日期中很常见。
使用*
with scanf
抑制赋值。 随后的转换结果将被丢弃。