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

输出
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(单独)。

这是Standard C,而不是Turbo C的特殊功能(该问题的第一版已指定,但是自从我首次编写此答案以来,已对问题进行了编辑,以删除对Turbo C的引用)。

关于c - scanf()中的%* c-是什么意思?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11542010/

10-11 19:31