【问题标题】:What's the escape sequence for blanks in C?C中空格的转义序列是什么?
【发布时间】:2011-03-19 07:06:59
【问题描述】:

我正在编写一个程序来计算空格、制表符和换行符。我记得制表符和换行符的转义序列是什么,但是空白呢? \b?还是那个退格?

【问题讨论】:

  • @sipwiz - 虽然 \0x20 通常可用于空格,但需要担心不同字符编码的问题。并非所有 8 位编码都是基于 ASCII 的,如今的字节流可能是编码的 unicode 字符串。 \0x20 当然对于 UTF-8 是正确的,但对于其他一些编码则不正确。这些可能使用其他类型而不是 char 数组来表示,但不一定 - char 数组作为字节流是 I/O 处理的常见模式,无论字节表示什么。
  • @Steve314 如果 OP 使用的是非 ASCII 或非 UTF8 编码,那么一个不错的选择是他已经知道他的问题的答案,因为他已经有几个箍了跳过:)。
  • @sipwiz - 代码被回收和移动。关键是代码的可移植性很好。无论它是为什么平台编写的,它以后都可能在其他平台上运行。

标签: c escaping whitespace space kernighan-and-ritchie


【解决方案1】:

您是指"a b" 中的“空白”吗?那是一个空格:' '

这里有一个list of escape sequences 供参考。

【讨论】:

    【解决方案2】:

    如果要检查字符是否为空格,可以使用<ctype.h> 中的isspace() 函数。在默认的 C 语言环境中,它会检查空格、制表符、换页符、换行符、回车符和垂直制表符。

    【讨论】:

      【解决方案3】:

      空格就是' ',十六进制存储为20,也就是32的整数等价物。例如:

      if (a == ' ')
      

      检查整数 32。同样:

      if (a == '\n')
      

      检查整数 10,因为 \n 是十六进制的 0A,即整数 10。 以下是其他最常见的转义序列及其对应的十六进制和整数:

      code: │   name:                │Hex to integer:
      ──────│────────────────────────│──────────────
      \n    │  # Newline             │  Hex 0A = 10
      \t    │  # Horizontal Tab      │  Hex 09 = 9
      \v    │  # Vertical Tab        │  Hex 0B = 11
      \b    │  # Backspace           │  Hex 08 = 8
      \r    │  # Carriage Return     │  Hex 0D = 13
      \f    │  # Form feed           │  Hex 0C = 12
      \a    │  # Audible Alert (bell)│  Hex 07 = 7
      \\    │  # Backslash           │  Hex 5C = 92
      \?    │  # Question mark       │  Hex 3F = 63
      \'    │  # Single quote        │  Hex 27 = 39
      \"    │  # Double quote        │  Hex 22 = 34
      ' '   │  # Space/Blank         │  Hex 20 = 32
      

      【讨论】:

        【解决方案4】:

        \b 是退格 (ASCII 0x8)。对于常规空间(ASCII 0x20),您不需要转义。您可以使用' '

        【讨论】:

        • 实际上,它可能对空格被“规范化”的情况很有用,例如在 XML 字段中
        【解决方案5】:

        '\b' 是退格键,你不需要空格的转义序列,因为 ' ' 就可以了。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2015-07-08
          • 1970-01-01
          • 1970-01-01
          • 2015-07-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多