unix与windows下的\r与\n

1、printf("-----");printf("\r");printf("-----");printf("\n");printf("-----");printf("\... 1、printf("-----");
printf("\r");
printf("-----");
printf("\n");
printf("-----");
printf("\r\n");
printf("-----");
打印后发现只打印了三行-----?

2、unix下没有\r,现在在unix下使用strcat(start, "\n");,然后用ue在windows下打开看到start此处是0D 0A,是说unix到windows后,自动添加了一个\r(oxoA)?

谢谢!
展开
 我来答
odwodw
2010-06-28
知道答主
回答量:21
采纳率:0%
帮助的人:20.4万
展开全部
1.只打印了三行是对的,我没调试,但我想结果应该是这样:
----------
-----
-----
这样分析:\r是回车,\n是换行,回车,故名思义,只是把光标移动到本行前,不会换行,换行就是换行了,
所以第一行,是前两次组起来,并且,前5个横杠是第二次打印出来的。
有时候\r\n和\n的显示效果是一样的。但对于有些显示就不同,我所知道的MFC里一个文本框控件,里面的打印,\r\n和\n就是不同的。
2.这是没有道理的,你所说的自动添加\r,如果可能也只能是软件本身(UE)显示的需要,二进制传输的话应该不会出现这种情况。
个人愚见。

补充一下:刚看到你说只打印了三行-----,那可能就是第二次打印因为也是从行首打,所以把第一次的覆盖了,没想到是printf默认是覆盖模式,不是插入模式,呵呵,我想应该是这样。你可以试下第二次打五个*****试试。
hefan77
2010-06-28 · TA获得超过176个赞
知道答主
回答量:92
采纳率:0%
帮助的人:94万
展开全部
其实这个是ANSI C易移植性的一个表现,各个操作系统的文本结束符是不一样的,MS-DOS用\r\n来表示行尾,有的操作系统用\r来表示行尾(如Macintosh)。C程序是使用\n来表示行尾的,但我们看到的是,不管你在什么操作系统上执行C程序,都可以正确的换行,那是因为在读取或者写入文件时它会自动的转换,比如读取时把\r\n转换成\n ,写入时又换回来。所以看下你的程序。
1。把\n换成行尾编码,可不是只有3行吗。

2。这个就不用说了再windows下面刚刚说了\r\n表示行尾,0D 0A的ASCII编码你查一下 0D →CR OA→LF
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式