我试图在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);
Run Code Online (Sandbox Code Playgroud)
OUTPUT
Enter day, month and year 23
2
1991
3
5
The date is: 23 1991 5
Run Code Online (Sandbox Code Playgroud)
将*在scanf()格式意味着"读取数据,但不将其分配到参数列表中的变量".在上下文中,它意味着您可以键入:
18/07/2012
Run Code Online (Sandbox Code Playgroud)
并正确解释当天(18),月(7)和年(2012).格式字符串中的空格是至关重要的,并且复杂化.通常,%c读取下一个字符,甚至是空格,但%*c转换说明符周围的空格处理空格,因此代码需要使用非空白字符.
因此,当您键入时观察到的行为:
23 2 1991 3 5
Run Code Online (Sandbox Code Playgroud)
第一个消耗2(单独使用%*c),第二个消耗3(独立).
这是标准C,而不是Turbo C的特殊功能(该问题的第一版指定,但问题已被编辑,以便在我第一次写这个答案后删除对Turbo C的引用).