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

Pep*_*791 3 c scanf

我试图在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)

Jon*_*ler 8

*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的引用).


nha*_*tdh 5

格式字符串中的*after%表示将忽略与格式匹配的输入(因此无需传入指向变量的指针来存储您不打算使用的匹配值)。