C中空格的转义序列是啥?

Posted

技术标签:

【中文标题】C中空格的转义序列是啥?【英文标题】: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 - 代码被回收和移动。关键是代码的可移植性很好。无论它是为什么平台编写的,它以后都可能在其他平台上运行。 【参考方案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' 是退格键,你不需要空格的转义序列,因为 ' ' 就可以了。

【讨论】:

以上是关于C中空格的转义序列是啥?的主要内容,如果未能解决你的问题,请参考以下文章

转义序列各字符间可以有空格吗 是回车换刚么

java 中的空格的转义字符是啥

为啥是 ”\?” C/C++ 中的转义序列?

从C#目录中删除转义序列

Swift UITesting 错误:文字中的转义序列无效。 \U201c

[C#, 笔记] 启用虚拟终端处理 (使用 ANSI 转义序列前需启用)