首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

LINUX/UNIX上的回车换行与WINDOWS上的区别

2012-10-23 
LINUX/UNIX下的回车换行与WINDOWS下的区别}最后只显示 xixi 而 hahaha 背覆盖了/n 是回车+换行 把光标 先

LINUX/UNIX下的回车换行与WINDOWS下的区别


}
最后只显示 xixi 而 hahaha 背覆盖了

/n 是回车+换行 把光标 先移到 行首 然后换到下一行 也就是 下一行的行首拉

int main() {

cout << "hahaha" << "/n" << "xixi" ;


}

?

http://hi.baidu.com/elric9/blog/item/2a60801871f2f5158718bf41.html

为什么我在 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就是不错的工具。

1 楼 veizz 2011-08-27   很不错!写得非常容易理解。

热点排行