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