我通常使用 获得一个字符%c
,但我见过使用 的代码%*c%c
。例如:
char a;
scanf("%*c%c", &a);
有什么不同?
在scanf
格式字符串中, 之后%
的*
字符是赋值抑制字符。
在您的示例中,它吃第一个字符但不存储它。
例如,使用:
char a;
scanf("%c", &a);
如果输入:xyz\n
, (\n
是换行符) 那么x
将存储在 object 中a
。
和:
scanf("%*c%c", &a);
如果输入:xyz\n
,y
将存储在 object 中a
。
C表示*
以scanf
这种方式指定:
(C99, 7.19.6.2p10) 除非用 * 指示分配抑制,否则转换结果将放置在尚未收到转换结果的格式参数后面的第一个参数所指向的对象中。
基本上%c指的是字符类型说明符,*% c用于排除一个字符,以便从控制台读取该字符,但不会将其分配给任何变量。例如。-:
假设输入是 2018年 12 月 31 日 ,并且您只想以整数形式输出并且想要排除 '/' 字符,那么您可以在此处使用 %*c 作为 - scanf("%d%*c%d%* c%d" , &day,&month,&year);
所以这样你将排除两个'/'字符。
以类似的方式%*d用于排除一个整数, %*f用于排除一个 float ,%*s用于排除字符串的一个单词。希望它有所帮助:)