什么';C中空格的转义顺序是什么?
我正在写一个程序来计算空格、制表符和换行符。我记得制表符和换行符的转义序列是什么,但是空格呢<代码>\b?或者是退格?什么';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
是退格(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字段中