【转】 换行符‘\n’和回车符‘\r’

原文地址:

http://blog.csdn.net/silyvin/article/details/7275037

原文:

  

在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。

于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。

这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。

后来,计算机发明了,这两个概念也就被般到了计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。于是,就出现了分歧。

Unix系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“<换行><回车>”,即“\n\r”;Mac系统里,每行结尾是“<回车>”。一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。

在ascii中,回车和换行是不同的字符。0x0A是回车,即光标移动到本行的最左面;   0x0D是换行,即光标移动到下一行。    
     
  在dos窗口中按回车键,其实是输入了两个字符0x0A,0x0D,对应到c中,就是\r(回车)\n(换行)

在C语言中    
将  \n   存入文件    
  window:   0d   0a    
  unix:   0d    
  如果不存到文件中,不会变。    
  如果从文件中提取,    
  windows:   0d   0a   ->   \n    
  unix   :   0d   ->   \n

[  游客   发表于  2008-03-27 18:55  ]

回车键,即键盘上的ENTER键,是一个比较有用的键,在文字编辑时,回车键的作用是换行,在输入网址时回车键的作用是“转到”,在执行DOS命令时,回车键的作用是执行……
    在标准键盘上,回车键一共有2个,一个在主键盘区的右边,Shift键的上面,一个在小键盘的右下角,加号键的下面。

回车键的历史

关于“回车键”的来历,还得从机械的英文打字机说起。在打字机上,有一个部件叫“字车”,每输入一个单词,“字车”就前进一格。当输满一行后,使用者就要推动“字车”到起始位置,这时打字机会有两个动作:“字车”归位、滚筒上卷一行(相当于“字车”下移一行),以便开始输入下一行,这中推动“字车”的动作叫“回车”。后来,在电动的打字机上,人们增加了一个直接起“回车”作用的键。他被称为“回车键”。 
  在现今的电脑键盘上,“回车键”上曾使用过“CR”、“RETURN”的字样,后来才统一确定为“Enter”。

回车的ASCII代码

16进制是“0x0d” 
    10进制是“13” 
    在某些语言中可以用‘\r’表示。

[  游客   发表于  2008-03-27 18:59  ]

如果用过机械打字机,就知道回车和换行的区别了。。。 
  换行就是把滚筒卷一格,不改变水平位置。    
  回车就是把水平位置复位,不卷动滚筒。

但是我们平时按得Enter到底是回车还是换行,不太清楚?? 
看到一种说法:windows下enter是 \n\r,unix下是\n,mac下是\r

在MS的系统中纯文本格式按一个回车键是输入了两个字符,一个回车一个换行。在LINUX系统中则只是一个回车。 
//以上内容参考了http://topic.csdn.net/t/20040617/23/3101951.html#和http://topic.csdn.net/t/20021113/09/1171659.html的讨论

还有在编程时文件操作

wb(二进制方式)或者wt(文本方式)也会有影响。我做了个实验(实验用.net2003) 
在01.txt文件中输入12然后enter,在ultraedit中看到的二进制是31 32 0d 0a

然后程序如下:

int mian() 
{  FILE   *fp1,*fp2,*fp3,*fp4,*fp5,*fp6;    
  
  char a[10]; 
  char b[10]; 
    
  fp1   =   fopen("01.txt","r");  
  fp3   =   fopen("02.txt","w");  
  fread(a,sizeof(unsigned char),8,fp1);       //a里是31 32 0a 
  fwrite(a,sizeof(unsigned char),8,fp3);      //02.txt里是31 32 0d 0a  ,原因是输入的情况下,换行回车转换成换行,然后输出时换行又会转成换行回车
  fclose(fp1); 
  fclose(fp3);

fp2   =   fopen("01.txt","rb"); 
  fp4   =   fopen("03.txt","wb"); 
  fread(b,sizeof(unsigned char),8,fp2);      //b里是31 32 0d 0a 
  fwrite(b,sizeof(unsigned char),8,fp4);      //03.txt里是31 32 0d 0a ,原因是二进制情况下回车和换行的(类似文本方式的那种转换)是不存在的
 fclose(fp2); 
  fclose(fp4);

return   0;   

好像结论是这样的:读的方式下,在文本方式下,enter是0x0a;在二进制方式下,enter是0x0d,0x0a。

MSDN中查到这样的话:Also, in text mode, carriage return–linefeed combinations are translated into single linefeeds on input, and linefeed characters are translated to carriage return–linefeed combinations on output. (输入的情况下,换行回车转换成换行,然后输出时换行又会转成换行回车)When a Unicode stream-I/O function operates in text mode (the default), the source or destination stream is assumed to be a sequence of multibyte characters. Therefore, the Unicode stream-input functions convert multibyte characters to wide characters. For the same reason, the Unicode stream-output functions convert wide characters to multibyte characters.

Open in binary (untranslated) mode; translations involving carriage-return and linefeed characters are suppressed. (二进制情况下回车和换行的转换是不存在的).

再引用一篇:http://zhidao.baidu.com/question/27868102.html?fr=qrl3

软硬回车 }

硬回车就是普通我们按回车产生的,它在换行的同时也起着段落分隔的作用。  
软回车是用 Shift + Enter 产生的,它换行,但是并不换段,即前后两段文字在 Word 中属于同一“段”。在应用格式时你会体会到这一点。

切换:

编辑——替换,点击高级,在“查找内容”点入“特殊字符”中的手动换行符,再在“替换为”中点入“特殊字符”中的段落标记,最后点击全部替换。

键盘上只有一种回车键Enter,但却有两种不同性质的换行标记,不能不说是一个奇迹。

我们常用的回车是硬回车,就是在word中敲击Enter键产生的那个弯曲的小箭头,占两个字节。这种回车可以有效地把段落标记出来分清楚。在两个硬回车之间的文字自成一个段落,可以对它单独设置段落标记而不用担心其他段落受到影响。这也是我们习惯用硬回车的原因:排版方便。

但是硬回车也给我们带来了麻烦。你如果是网页设计者,或者是论坛游侠,一定有这样的经历:当你打算换行时,换出的行却实在不能恭维,行间距太大了!其实这和硬回车的原理是一样的,只不过在word等文本编辑器中没有显示出它的“本来面目”。不过这样的排版的确造成了不小的困难,这时我们就得请出硬回车的兄弟:软回车。

软回车只占一个字节,在word中是一个向下的箭头。如果你从很复杂的网页中向word中复制过文字的话,对它一定不会陌生。但是想在word中直接输入软回车可不是那么容易的。因为软回车不是真正的段落标记,它只是另起了一行,不是分段。所以它不是很利于文字排版,因为它无法作为单独的一段被赋予特殊的格式。但是尽管如此,它在网页设计中还是具有举足轻重的地位的。

软回车能使前后两行的行间距大幅度缩小,因为它不是段落标记,要和法定的段落标记——硬回车区别出来。硬回车的html代码是<p>..</p>,段落的内容就夹在里面,而软回车的代码很精悍:<br>。因此在网页中想用到软回车,只需切换到代码页面,键入软回车的代码即可。 
下面我讲一下不同编辑器文字互相拷贝时回车的转化情况。

地球人都知道的,网页的文字如果复制到word中,则硬回车变为弯曲的箭头,软回车变为向下的箭头。结果造成习惯用word编辑文本的朋友很不习惯很不舒服的情况。

word中的文本复制到网页中也是同样的道理。可以说word和网页比较兼容的,要不怎么会有“保存为web页”这种选项呢?

记事本也是大家摸的比较多的编辑器。但是近年来随着社会发展外加记事本的种种弊端,许多人都将其打入冷宫。对此我只能表示遗憾,因为记事本本身的功能不丰富就是别的编辑器所取代不了的优点。大家再次将网页的文字复制时,不妨粘贴到记事本里试试。哈哈,不管网页设计者用的是什么回车,现在都变成一种回车了!怎么,你不信?那就看看吧:软回车变成了普通的回车,硬回车变成了两个普通的回车。你再从记事本里复制文字到word,记事本里的回车无一例外全都变成了硬回车!你再再从记事本里复制文字到网页编辑器,所有回车就都变成软回车了!!

[  游客   发表于  2008-03-27 19:00  ]

\n是换行,英文是linefeed,ASCII码是0xA。 
\r是回车,英文是carriage return ,ASCII码是0xD。

时间: 2024-10-20 03:11:43

【转】 换行符‘\n’和回车符‘\r’的相关文章

换行符‘\n’和回车符‘\r’

顾名思义,换行符就是另起一行,回车符就是回到一行的开头,所以我们平时编写文件的回车符应该确切来说叫做回车换行符 '\n' 10 换行(newline)'\r' 13 回车(return) 也可以表示为'\x0a'和'\x0d'.(16进制) 在windows系统下,回车换行符号是"\r\n".但是在Linux等系统下是没有"\r"符号的. 在解析文本或其他格式的文件内容时,常常要碰到判定回车换行的地方,这个时候就要注意既要判定"\r\n"又要判定

Windows、Unix、Mac不同操作系统的换行问题-剖析回车符\r和换行符\n

转载链接:http://blog.csdn.net/tskyfree/article/details/8121951 一.概念: 换行符‘\n’和回车符‘\r’ (1)换行符就是另起一行  --- '\n' 10 换行(newline) (2)回车符就是回到一行的开头 --- '\r' 13 回车(return) 所以我们平时编写文件的回车符应该确切来说叫做回车换行符     二.应用: (1)在微软的MS-DOS和Windows中,使用“回车CR('\r')”和“换行LF('\n')”两个字符

菜鸟随笔(1)---Windows、Unix、Mac不同操作系统的换行问题 回车符\r和换行符\n

一只菜鸟横空出世,码农世界闯一闯,每天进展多一丢丢. Windows.Unix.Mac不同操作系统的换行问题 回车符\r和换行符\n 一.概念: 换行符'\n'和回车符'\r' (1)换行符就是另起一行 --- '\n' 10 换行(newline) (2)回车符就是回到一行的开头 --- '\r' 13 回车(return) 所以我们平时编写文件的回车符应该确切来说叫做回车换行符 CR: 回车(Carriage Return) \rLF: 换行(Line Feed) \n 二.应用: (1)在

关于MYSQL表记录字段换行符回车符处理

UPDATE tablename SET  FIELD = REPLACE(REPLACE(FIELD, CHAR(10), ''), CHAR(13), ''); CHAR(10):  换行符 CHAR(13):  回车符  

替换SQL字段中的换行符,回车符

有时候我们需要替换一些不需要的SQL字段, 下面就为您介绍替换SQL字段的几种情况,如果您对替换SQL字段方面感兴趣的话,不妨一看. 替换SQL字段中的换行符,回车符: 1> 回车符 SELECT *, REPLACE(detail, CHAR(13) , '<br>') AS 显示替换后的内容 FROM loginfo 2>换行符 SELECT *, REPLACE(detail, CHAR(10), '<br>') AS 显示替换后的内容 FROM loginfo

sqlserver数据库 去除字段中空格,换行符,回车符(使用replace语句)

SQL中可以使用Replace函数来对某个字段里的某些字符进行替换操作,语法如下: 语法 REPLACE ( original-string, search-string, replace-string ) 参数 如果有某个参数为 NULL,此函数返回 NULL. original-string     被搜索的字符串.可为任意长度. search-string     要搜索并被 replace-string 替换的字符串.该字符串的长度不应超过 255 个字节.如果 search-strin

oracle中去掉文本中的换行符、回车符、制表符

一.特殊符号ascii定义 制表符 chr(9)  换行符 chr(10) 回车符 chr(13) UPDATE tc_car_order set USE_REASON =  REPLACE('USE_REASON',chr(9),'');UPDATE tc_car_order set USE_REASON =  REPLACE('USE_REASON',chr(10),'');UPDATE tc_car_order set USE_REASON =  REPLACE('USE_REASON',

ORALCE 换行符 空格符 回车符

① 换行符 chr(10)② 回车符 chr(13) ③ 空格符 chr(9) 例1:效果对比.chr(10)在一个字段中换行显示一列数据,chr(13)同样是换行显示一行数据,chr(9)会显示一个空格.因此,需要在 oralce 的一个字段中同一列显示换行的两句话,在SQL语句中拼入 chr(10) 或者 chr(13) 都可以. 1 select '换行符1'||chr(10)||'换行符2'||chr(10)||'换行符3' from dual; 2 select '回车符1'||chr

回车符(CR)与换行符(LF), &#39;\r&#39;和&#39;\n&#39;的区别

回车”(Carriage Return)和“换行”(Line Feed)这两个概念的来历和区别.在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33,Linux/Unix下的tty概念也来自于此)的玩意,每秒钟可以打10个字符.但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正 好可以打两个字符.要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失. 于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符.一个叫做“回车”,告诉打字