C语言中空格的转义序列是什么?

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

1
@sipwiz - 虽然 \0x20 经常用于表示空格,但需要考虑不同的字符编码问题。并非所有的8位编码都是基于ASCII的,并且现在的字节流可能是一个编码后的Unicode字符串。当然,\0x20 对于UTF-8 是正确的,但对于一些其他的编码则不是。这些编码可能使用与 char 数组不同的数据类型来表示,但也可能不是——char 数组作为字节流,在I/O处理中无论这些字节代表什么内容都是如此常见的模式。 - user180247
@Steve314 如果原帖使用的是非ASCII或非UTF8编码,那么很可能他已经知道了答案,因为他必须要跨越一些障碍才能提出这个问题 :)。 - sipsorcery
@sipwiz - 代码会被回收和移动。重要的是代码具有可移植性。无论为什么平台编写,它可能在以后运行在其他平台上。 - user180247
另一个技巧是使用\x20代替空格。 - Dee
5个回答

26
你是说像"a b"这样的“空白”?那就是一个空格:' '
这里有一个供参考的转义字符列表

7

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


5

空格的表示形式是' ',以十六进制表示则为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

2

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


1
实际上,这在空格被“规范化”掉的情况下非常有用,比如在XML字段中。 - glopes

1
'

'是退格符,对于空格,您不需要转义序列,因为使用' '就可以了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接