免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2987 | 回复: 2
打印 上一主题 下一主题

关于Unix/Linu下的回车符 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-11-14 15:40 |只看该作者 |倒序浏览
本帖最后由 jc_zhong 于 2010-11-14 15:47 编辑

我们知道,在Unix/Linux里面,换行是只有一个'\n'的。在我作K&R的3-2练习时出现些奇怪的“现象”。
当我试图将一个字符串:aa\tbb\rcc\ndd中的字符\t等转换为'\t'时输出了莫名其妙的结果
cc        bb
dd
'aa'不见了,'cc'和'bb'的位置颠倒了,只要试图对\r转换为'\r',就会出问题。
那么回车符在Unix\Linux中有什么用呢?试图转换时发生了什么?

PS:我曾经试过$man grep > grep ,然后用VI打开后发现里面不可见字符都被显示出来,其中就有\r.
这个现象发生在在Fedora中执行上述指令,然后把文件拿到Debian上看时。

望各位不吝指教!多谢!

附上我写的代码:
  1. #include <stdio.h>
  2. #include <string.h>
  3. void rescape(char s[],char t[])
  4. {
  5.         int i,j;
  6.         for(i = j = 0; i <= strlen(t); i ++, j ++)
  7.         {
  8.                 if(t[i] == '\\')
  9.                 {
  10.                         switch(t[++i])
  11.                         {
  12.                                 case 'n':
  13.                                 {
  14.                                         s[j] = '\n';
  15.                                         break;
  16.                                 }
  17.                                 case 'r':
  18.                                 {
  19.                                         s[j] = '\r';
  20.                                         break;
  21.                                 }
  22.                                 case 't':
  23.                                 {
  24.                                         s[j] = '\t';
  25.                                         break;
  26.                                 }
  27.                                 defaule : break;
  28.                         }
  29.                 }
  30.                 else
  31.                 {
  32.                         s[j] = t[i];
  33.                 }
  34.         }
  35. }

  36. int main()
  37. {
  38.         char s[200];
  39.         char t[200];

  40.         scanf("%s",t);
  41.         rescape(s,t);
  42.         printf("%s\n",s);

  43.         return 0;
  44. }
复制代码

论坛徽章:
324
射手座
日期:2013-08-23 12:04:38射手座
日期:2013-08-23 16:18:12未羊
日期:2013-08-30 14:33:15水瓶座
日期:2013-09-02 16:44:31摩羯座
日期:2013-09-25 09:33:52双子座
日期:2013-09-26 12:21:10金牛座
日期:2013-10-14 09:08:49申猴
日期:2013-10-16 13:09:43子鼠
日期:2013-10-17 23:23:19射手座
日期:2013-10-18 13:00:27金牛座
日期:2013-10-18 15:47:57午马
日期:2013-10-18 21:43:38
2 [报告]
发表于 2010-11-14 17:07 |只看该作者
"\r"回到行头,输出cc覆盖了aa

论坛徽章:
0
3 [报告]
发表于 2010-11-14 17:51 |只看该作者
"\r"回到行头,输出cc覆盖了aa
hellioncu 发表于 2010-11-14 17:07



啊!原来如此!谢谢啦!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP