我试图在 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(单独)。
这是标准 C,而不是 Turbo C 的特殊功能(问题的第一版指定了这个功能,但自从我第一次写这个答案以来,这个问题已经被编辑以删除对 Turbo C 的引用)。
关于c - scanf() 中的 %*c - 这是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11542010/