1. <ins id='14gre'></ins>

      <acronym id='14gre'><em id='14gre'></em><td id='14gre'><div id='14gre'></div></td></acronym><address id='14gre'><big id='14gre'><big id='14gre'></big><legend id='14gre'></legend></big></address>

      <dl id='14gre'></dl>

      <i id='14gre'></i>
    2. <tr id='14gre'><strong id='14gre'></strong><small id='14gre'></small><button id='14gre'></button><li id='14gre'><noscript id='14gre'><big id='14gre'></big><dt id='14gre'></dt></noscript></li></tr><ol id='14gre'><table id='14gre'><blockquote id='14gre'><tbody id='14gre'></tbody></blockquote></table></ol><u id='14gre'></u><kbd id='14gre'><kbd id='14gre'></kbd></kbd>

          <fieldset id='14gre'></fieldset>

          <code id='14gre'><strong id='14gre'></strong></code>
          <i id='14gre'><div id='14gre'><ins id='14gre'></ins></div></i>

        1. <span id='14gre'></span>

          Linux和windows中的换行符差异问题

          • 时间:
          • 浏览:8
          • 来源:124软件资讯网

              Linux和windows中的换行符差异问题

              LINUX的换行符在Windows记事本打开不换行或泛起黑点是由于Linux和windows中的换行符差异问题造成的  。

              首先来看回车符号和换行符号发生配景

              关于“回车”(carriage return)和“换行”(line feed)这两个观点的来源和区别  。

              在盘算机还没有泛起之前  ,有一种叫做电传打字机(Teletype Model 33)的玩意 ,每秒钟可以打10个字符 。可是它有一个问题  ,就是打完一行换行的时间  ,要用去0.2秒  ,正好可以打两个字符  。要是在

              这0.2秒内里 ,又有新的字符传过来  ,那么这个字符将丢失  。

              于是 ,研制职员想了个措施解决这个问题 ,就是在每行后面加两个表现竣事的字符  。一个叫做“回车” ,告诉打字机把打印头定位在左界限;另一个叫做“换行”  ,告诉打字机把纸向下移一行 。

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

              厥后 ,盘算机发现了  ,这两个观点也就被般到了盘算机上  。那时  ,存储器很贵  ,一些科学家以为在每行末端加两个字符太铺张了  ,加一个就可以  。于是 ,就泛起了分歧  。

              Unix系统里  ,每行末端只有“<换行>” ,即“\n”;Windows系统内里 ,每行末端是“ <回车><换行>”  ,即“\r\n”;Mac系统里  ,每行末端是“<回车>”  。一个直接结果是 ,Unix/Mac系统下的文件在

              Windows里打开的话  ,所有文字会酿成一行;而Windows里的文件在Unix/Mac下打开的话  ,在每行的末端可能会多出一个^M符号

              windows建立的文件是 \n\r竣事的  , 而linux  ,mac这种unix类系统是\n竣事的  。

              以是unix的文本到windows会泛起换行丢失(ultraedit这种软件可以准确识别); 而反过来就会泛起^M的符号;

              Windows等操作系统用的文本换行符和UNIX/Linux操作系统用的差别  ,Windows系统下输入的换行符在UNIX/Linux下不会显示为“换行”  ,而是显示为 ^M 这个符号(这是Linux等系统下划定的特殊标志  ,

              占一个字符巨细  ,不是^和M的组合 ,打印不出来的)  。Linux下许多文本编辑器(下令行)会在显示这个标志之后  ,补上一个自己的换行符  ,以制止内容杂乱(只是用于显示  ,增补的换行符不会写入文件  ,有专门的下令将Windows换行符替换为Linux换行符) 。 UNIX/Linux系统下的换行符在Windows系统的文本编辑器中会被忽略  ,整个文本会乱成一团  。

              windows换行是\r\n  ,十六进制数值是:0D0A  。

              LINUX换行是\n ,十六进制数值是:0A

              以是在linux生存的文件在windows上用记事本看的话会泛起黑点 ,我们可以在LINUX下用下令把linux的文件花样转换成win花样的  。

              unix2dos 是把linux文件花样转换成windows文件花样

              dos2unix 是把windows花样转换成linux文件花样 。

              linux下删除windows换行符^M

              OJ判题时发现一个问题:用%c读入的代码都市报wa 。厥后发现跟scanf有关  。在linux下使用%c会读到\n和\r两个字符  。以是需要将^M(也就是\r)字符删掉

              删除要领不少  。找了一个比力简朴的 。

              要将a.txt里的^M去掉并写入b.txt  ,则使用如下指令cat a.txt | tr -d "^M" > b.txt

              注重:语句中的^M是通过ctrl+V, ctrl+M输入的  。特指/r字符

              unix 下换行符只有: \r

              Dos 下换行符有:\r\n

              详细的 , \r的ascii 码是:14

              \n的ascii 码是:10