\n(换行符)和\r(回车符)有什么区别?
特别地,\n和\r之间有什么实际的区别吗?是否有应该使用其中一种而不是另一种的地方?
\n(换行符)和\r(回车符)有什么区别?
特别地,\n和\r之间有什么实际的区别吗?是否有应该使用其中一种而不是另一种的地方?
当前回答
#include <stdio.h>
void main()
{
int countch=0;
int countwd=1;
printf("Enter your sentence in lowercase: ");
char ch='a';
while(ch!='\r')
{
ch=getche();
if(ch==' ')
countwd++;
else
countch++;
}
printf("\n Words = ",countwd);
printf("Characters = ",countch-1);
getch();
}
让我们以这个例子为例,试着把\n放在\r的地方,它不会工作,并试着猜测为什么?
其他回答
历史上,a \n用于向下移动车厢,而\r用于将车厢移回页面的左侧。
更令人困惑的是,我一直在使用浏览器中的HTML页面中的TextArea元素编写一个简单的文本编辑器。考虑到CR/LF的兼容性问题,我编写了代码来检查平台,并使用适用于平台的换行符约定。
然而,当检查TextArea中包含的实际字符时,我发现了一些有趣的事情,通过一个小的JavaScript函数生成对应于字符的十六进制数据。
为了测试,我输入了以下文本:
你好,世界(输入)
再见,残酷的世界[进入]
当我检查文本数据时,得到的字节序列是这样的:
48 65 6c 6c 6f 2c 20 57 6f 72 6c 64 0a 47 6f 6f 64 62 79 65 2c 20 43 72 75 65 6c 20 57 6f 72 6c 64 0a
现在,大多数人看到这个,看到0a而没有0d字节,会认为这个输出是在Unix/Linux平台上获得的。但是,这里有一个问题:我在Windows 7 64位的谷歌Chrome中获得的这个序列。
因此,如果你正在使用一个TextArea元素并检查文本,检查输出,就像我上面所做的那样,以确保从你的TextArea返回的实际字符字节。我还没有看到这在其他平台或其他浏览器上是否有所不同,但如果您通过JavaScript执行文本处理,并且需要使该文本处理平台独立,那么就值得记住这一点。
上述文章中涉及的约定适用于控制台输出,但HTML元素似乎遵循UNIX/Linux约定。除非有人在不同的平台/浏览器上发现了其他情况。
才能完成,
在shell (bash)脚本中,您可以使用\r发送光标,在行前,当然,\n将光标放在新行上。
例如,试着:
echo -en "AA--AA" ; echo -en "BB" ; echo -en "\rBB"
第一个“回声”显示AA——AA 第二:AA—AABB 最后一个:BB—AABB
但是不要忘记使用-en作为参数。
两个不同的角色。
\n在Unix文本文件中用作行结束符
\r历史上(在os X之前)在Mac文本文件中用作行结束符
\r\n(即同时使用)用于终止Windows和DOS文本文件中的行。
不同操作系统的两个不同字符。这在通过TCP/IP传输的数据中也起着作用,这需要使用\r\n。
\ n Unix
\ r Mac
Windows和DOS。