【问题标题】:What does the asterisk mean in the argument list of scanf [duplicate]scanf的参数列表中的星号是什么意思[重复]
【发布时间】:2014-06-02 19:40:28
【问题描述】:

我有一个 C 程序,其中一行有:

scanf("%d%*c%d", &x, &y);

%*c是什么意思?

【问题讨论】:

  • 表示在输入流中查找char,但不要将其保存到任何变量中。
  • 两个答案都没有讨论*scanf() 的返回值的影响,我认为这是“没有贡献”。 scanf("%d%*c%d", &x, &y); 通常应该返回 2。
  • 同意@chux,scanf 带有* 的字段不计入返回值

标签: c input


【解决方案1】:

scanf 从标准输入读取数据,然后将该数据存储到根据格式指向的参数中(在您的情况下,参数是&x&y)。

*表示要从流中读取数据但被忽略(即不存储在参数指向的位置)。

在您的情况下,%*c 表示该函数读取数据类型 char 但不将其存储到实例中。如果你想忽略字符串的一部分,比如字符,这很有用。

【讨论】:

    【解决方案2】:

    来自http://beej.us/guide/bgc/output/html/multipage/scanf.html

    *

    告诉 scanf() 执行指定的转换,但不将其存储在任何地方。它只是在读取数据时丢弃数据。这就是你 如果您希望 scanf() 吃一些数据但不想存储,请使用 它在任何地方;您没有为此转换提供 scanf() 参数。 示例:%*d。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-24
      • 2010-12-15
      • 2011-05-09
      • 1970-01-01
      • 2012-12-12
      • 2016-12-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多