Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2313515
  • 博文数量: 527
  • 博客积分: 10343
  • 博客等级: 上将
  • 技术积分: 5565
  • 用 户 组: 普通用户
  • 注册时间: 2005-07-26 23:05
文章分类

全部博文(527)

文章存档

2014年(4)

2012年(13)

2011年(19)

2010年(91)

2009年(136)

2008年(142)

2007年(80)

2006年(29)

2005年(13)

我的朋友

分类: WINDOWS

2008-07-08 00:17:59

其它环境/工具对\e的支持(也就是表达Escape的ASCII的转义符(0x1B)) 会诱导我误认为\e是个标准C语言所支持的转义符. 其实它是的.

忝列其中的有:(参考标准C语言手册 5.2.2 Character display semantics )
\a  bell, 在支持的设备(终端)上会鸣响一声
\b  退格键. 就是Backspace键啦
\t  TAB键.
\v  垂直TAB键, \t在今天还是很容易见到其作用, \v就难看到了
\f  进纸
\r  回车
\n  换行
\\  表示\字符本身.

那些可能让人误解的因素有:
bash 中的$'string' 表示法所支持的转义序列中, 明确列出包含了\e, 而且相关文档上说:
ANSI转义符,等价于\033  (见 )

gcc 中对\e 的确有额外的支持. 这个最容易让频繁使用gcc的人误认为标准C支持这个了. 要想在字符串中嵌入这个特殊字符, 可以这样:
"a\033b"
"a\x1bb"  这种写法不对. 标准中说:
the construction '\x123'
specifies an integer character constant containing only one character, since a hexadecimal escape sequence
is terminated only by a non-hexadecimal character.

#define ESC_STR "\033"
#define ESC_CHR '\033'
"a" ESC "b"
编译期会自动把这三个字符串连成一体.
阅读(1831) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~