LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 747|回复: 9

转义字符序列的问题

[复制链接]
发表于 2005-3-5 15:39:50 | 显示全部楼层 |阅读模式

  1. main()
  2. {
  3.     printf("hello, world\b\n");
  4. }
复制代码

输出为: hello, world


  1. main()
  2. {
  3.     printf("hello, worl\bd\n");
  4. }
复制代码

输出为: hello,word

为什么前一个回退字符没起作用(至少在我看来是这样)呢????
发表于 2005-3-5 20:49:21 | 显示全部楼层
虽然退了一个字符,但是前者没有用新字符把它覆盖,而是换行回车了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-5 21:16:18 | 显示全部楼层
Post by efan
虽然退了一个字符,但是前者没有用新字符把它覆盖,而是换行回车了。

那么就是说“\b" 只是只是位置向后退了一个字符,并不是删掉后面的字符,是这样的吗???
回复 支持 反对

使用道具 举报

发表于 2005-3-5 21:24:26 | 显示全部楼层

只是后退,而不是删除
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-5 22:05:03 | 显示全部楼层
那么象我这样理解: 就像是vim 的insert 模式下,光标向后移一个字符,然后按回车,那么输出就该是这样的:
hello, worl
d
哪里出错了呢???
回复 支持 反对

使用道具 举报

发表于 2005-3-5 22:41:43 | 显示全部楼层
噢不是,vim只是作了特殊的处理,而标准输入在处理'\n'的时候,也只不过是光标移动而已,并不会带动字符的移动。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-6 00:06:15 | 显示全部楼层
谢谢谢了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-10 22:49:46 | 显示全部楼层
"\b" 只是向后退一格,那么

  1. main()
  2. {
  3.     printf("hello, world\b");
  4. }
复制代码


输出为什么是:hello, worl ????????
本来以为明白了,一下子又糊涂了
回复 支持 反对

使用道具 举报

发表于 2005-3-11 08:48:46 | 显示全部楼层
没有'\n',最后的 'd' 被 Shell 的提示符覆盖了。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-11 11:25:53 | 显示全部楼层
总算搞清楚了,绝得自己好象钻牛角尖一样
谢过
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表