【问题标题】:Is there a way to know when fscanf reads a whitespace or a new line?有没有办法知道 fscanf 何时读取空格或换行?
【发布时间】:2012-09-25 03:12:41
【问题描述】:

我想知道是否有办法知道 fscanf 何时读取空白或换行。

示例: 格式化问字斜体 链接返回

当 fscanf 读取字符串直到遇到换行符或空格(使用 %s)时,它会读取格式以及它之后和之前的空格。问题是,有没有办法知道它读取了一个空格?而且进入第二行之后有没有办法知道它读到的是回车?

【问题讨论】:

  • 答案是否定的。如果你想知道这样的事情,你将不得不自己解析输入。
  • 不这样做,只需使用getlinefgets 获取单行输入,然后根据需要使用sscanfatoi 解析该行。
  • 这就是我的想法,我选择带头解析整行,但在开始之前,我决定看看是否有更简单或更简单的方法,谢谢 Jim Balter 和 nneonneo .

标签: c scanf


【解决方案1】:

您可以指示 fscanf 将空格读取到您的变量中,而不是读取和丢弃空格。使用 [ \n\r\t]* 之类的东西,但您需要在该表达式中包含更多字符。根据语言环境和运行时字符集的某些特性,您可能需要编写一个单独的函数来计算适当的格式字符串,然后再使用它。

如果您需要将 \n 与其他类型的空白区分开来,则您的变量中包含您刚读完的空白。您可能想要计算其中的所有 \n 字符,具体取决于您的需要。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-18
    • 1970-01-01
    • 2016-10-17
    • 1970-01-01
    • 2023-03-26
    • 2010-12-24
    • 2014-04-09
    相关资源
    最近更新 更多