【问题标题】:Format string confusion in fscanf function in CC中fscanf函数中的格式字符串混淆
【发布时间】:2017-07-19 11:55:27
【问题描述】:

我无法理解下面这行,谁能告诉我它是做什么的?

fscanf(file_pointer, "%*[^\n]");

【问题讨论】:

  • 试试scanf() manual。它匹配任何字符除了换行符,而*抑制转换的分配,所以字符只是“跳过”。

标签: c format-string


【解决方案1】:

docs 可能会看到:

* - 分配抑制字符,用于不将正在读取的值分配给fscanf 的任何接收参数。

[^\n] - 匹配除 (^) 新行 (\n) 之外的任何符号的转换说明符。

因此,fscanf 会读取所有符号,直到遇到新行。

【讨论】:

  • "读取一个符号,如果它不是一个新行,或者,如果它是一个新行,则忽略它。" -- 嗯,它会读取所有内容换行并忽略已读取的所有内容。
  • @FelixPalmen 完全正确,现已修复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-20
  • 1970-01-01
相关资源
最近更新 更多