为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

[精品]回车换行符的说明

2018-08-29 4页 doc 15KB 5阅读

用户头像

is_260251

暂无简介

举报
[精品]回车换行符的说明[精品]回车换行符的说明 今天,我总算搞清楚“回车”(carriage return)和“换行”(line feed)这两个概念的来历和区别了。 在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。 于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;...
[精品]回车换行符的说明
[精品]回车换行符的说明 今天,我总算搞清楚“回车”(carriage return)和“换行”(line feed)这两个概念的来历和区别了。 在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。 于是,研制人员想了个办法解决这个问题,就是在每行后面加两个示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。 这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。 后来,计算机发明了,这两个概念也就被般到了计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。于是,就出现了分歧。 Unix系统里,每行结尾只有“<换行>”,即“\n”;Windows系统里面,每行结尾是“<换行><回车>”,即“\n\r”;Mac系统里,每行结尾是“<回车>”。一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。 c语言编程时(windows系统) \r 就是return 回到 本行 行首 这就会把这一行以前的输出 覆盖掉 如: int main() { cout << "hahaha" << "\r" << "xixi" ; } 最后只显示 xixi 而 hahaha 被覆盖了 \n 是回车,换行 把光标 先移到 行首 然后换到下一行 也就是 下一行的行首拉 int main() { cout << "hahaha" << "\n" << "xixi" ; } 为什么我在 vi 等编器下打开一个文本文件会包含 ^M, 如何把它去掉? (见结论 4, 5) 为什么我在 windows 上用记事本打开 unix上的文件, 文件都不换行? (见结论 1) 原因分析: 要解决这个问题, 必先弄清 unix 与 windows 文本文件的差异: 1) 磁盘中 Windows 文本文件总是以 “回车” + “换行”的形式进行换行的. 2) 磁盘中 Unix 格式的文本文件, 总是以”换行符”(即: LF, „n?) 换行, 而非 “回车换行符”. (Unix 规定: unix 文本文件保存到磁盘时, 总是自动把 “回车换行符” 转换成 “回车符” 保存, 输出到终端时由终端自动将将 “回车符” 转换成 “回车换行符” 输出.) ** 容易看出 **: Windows 格式的文件换行时, 总是比 Unix格式的文件多一个 “回车” (?r?) 符.这是从老式的打字机上面遗传下来的,老式的打字机中的回车是指打印头回到行首,换行是进纸并开始下一行打印。 ** 结论 1 **: 这样在 windows 的记事本中打开 Unix 格式的文件时, 因为文件中没有 „r?, 所以无法正常显示. 结果就会把所有的内容显示在同一行中. ** 结论 2 **: UtraEdit 等工具会自动检测文件中是否包含 „r?, 当检查行末缺少 „r?时, 一般它会提示 要求进行 Unix 到 Windows 格式的转换. (相信大家都遇到这个提示信息). ** 结论 3 **: UtraEdit 和 vi 等工具, 在保存文件时会自动依照文件原来的格式进行保存. 即: 如打开的如是 windows 格式它会把文件依然按 windows 格式保存 (不进行自动转换). 如打开的如是 unix 格式它会把文件依然按 unix 格式保存 (不进行自动转换). ** 结论 4 **: 向 UtraEdit 打开的 Unix 格式文件中, 通过粘贴板 “粘贴” Windows 格式的若干片断行时(或反之, 即向 Windows 格式文件中, 通过粘贴板 “粘贴” Unix 格式的若干片断行时),代码片断中的 “回车换行符” “不会” 自动转换成单个 “换行” 符(反之亦然). 这样, 该文件中就会出现 “回车符” 与 “回车换行符” 互相夹杂. 即, 文件中既有单独的 “回车符” 也有 成对的 “回车换行符”. ** 结论 5 **: vi 编辑器等, 既能正确显示”规则”的 Unix 格式文件, 也能正确显示”规则”的 Windows 格式文件, 但, 对包含单独的 “回车符”, 同时成对的 “回车换行符”的不规则文件 (产生原因见结论 4), vi 将把回车符以 ^M 的形式显示. 解决: 使用类似问题 2 提供的解决方法即可解决, 不再骜述. 将 unix 转换成 Windows 格式时, 使用 unix2dos 或 win2unix -r(-r 代表反方向)即可. 则 显示 hahaha xixi 由此可见,如果LINUX下应用程序需要读取windows下的文件,需要特殊的文本转换工具 才行。比如EditPlus 2就是不错的工具。
/
本文档为【[精品]回车换行符的说明】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索