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中空格的转义序列是啥?的主要内容,如果未能解决你的问题,请参考以下文章