是什么作为格式说明SCANF%* C%c和%C的区别?(What is the difference

2019-06-25 14:44发布

我通常获取与字符%c ,但我已经看到了使用代码%*c%c 。 例如:

char a;
scanf("%*c%c", &a);

有什么不同?

Answer 1:

scanf格式字符串,后% ,在*字符是分配抑制字符

在你的榜样,它吃的第一个字符,但并不保存。

例如,有:

char a;
scanf("%c", &a);

如果输入: xyz\n\n是换行字符),那么x将被存储在对象a

附:

scanf("%*c%c", &a);

如果输入: xyz\ny将存储在对象a

ç说,指定*scanf是这样的:

(C99,7.19.6.2p10)除非分配抑制是由*指示的,转换的结果被放置在对象指向以下一个尚未接收到的转换结果的格式参数的第一个参数。



Answer 2:

据维基百科 :

百分比符号之后的可选星号(*)右表示通过此格式说明读出的数据将不被存储在变量中。 格式字符串后面没有参数应包括该下降变量。

它是如此,你可以跳过由星号匹配的字符。



文章来源: What is the difference between %*c%c and %c as a format specifier to scanf?