什么';C中空格的转义顺序是什么?

什么';C中空格的转义顺序是什么?,c,escaping,whitespace,space,kernighan-and-ritchie,C,Escaping,Whitespace,Space,Kernighan And Ritchie,我正在写一个程序来计算空格、制表符和换行符。我记得制表符和换行符的转义序列是什么,但是空格呢\b?或者是退格?\b是退格(ASCII 0x8)。常规空间(ASCII 0x20)不需要转义。你可以直接使用'你的意思是像中的“a b”那样的“空格”?这是一个空格:” 这里有一个供参考。'\b'是backspace,您不需要为空格指定转义序列,因为''就可以了 如果要检查字符是否为空白,可以使用中的isspace()函数。在默认的C语言环境中,它检查空格、制表符、换行符、回车符和垂直制表符。空格只是'

我正在写一个程序来计算空格、制表符和换行符。我记得制表符和换行符的转义序列是什么,但是空格呢<代码>\b?或者是退格?

\b
是退格(ASCII 0x8)。常规空间(ASCII 0x20)不需要转义。你可以直接使用
'

你的意思是像
中的“a b”
那样的“空格”?这是一个空格:


这里有一个供参考。

'\b'是backspace,您不需要为空格指定转义序列,因为''就可以了

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

空格只是
'
,在十六进制中存储为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

@sipwiz-虽然\0x20通常可用于空格,但需要担心不同字符编码的问题。并非所有的8位编码都是基于ASCII的,现在的字节流可能是编码的unicode字符串\当然,0x20对于UTF-8是正确的,但对于其他一些编码则不正确。可以使用字符数组以外的其他类型来表示,但不一定——字符数组作为字节流是I/O处理的常见模式,不管字节代表什么。@Steve314如果OP使用的是非ASCII或非UTF8编码,那么一个很好的赌注是他已经知道问题的答案,因为他已经有了一些障碍:)。@sipwiz-code回收和移动。关键是代码的可移植性很好。不管它是为什么平台编写的,它以后可能会在其他平台上运行。实际上,它在空白被“规范化”的情况下非常有用,例如在XML字段中