回车,换行区别
2016-08-03 15:33
274 查看
在ASCII编码中:
符号 ASCII码 意义
\n 10(0A) 换行NL(光标往下一行(不一定到下一行行首),n的英文newline,控制字符可以写成LF,即Line
Feed)
\r 13 (0D) 回车CR(光标重新回到本行开头,r的英文return,控制字符可以写成CR,即Carriage
Return)
在c/c++中:
符号 ASCII码 意义
\n 10(0A) 回车换行,光标移到下一行行首
\r 13 (0D) 回车不换行,光标移到本行行首
对于行末结束,操作系统中:
windows:\r\n
unix:\n
mac os:\r
一,浏览文件时:
unix和mac os文本文件在windows中,所有文字会变成一行,因为,windows中要回车符+换行符("\r\n")才会回车+换行,缺少一个控制符或者顺序不对都不能正确的另起一行,原来的\n,\r由于不是可打印字符,会出现黑框。
Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。
二,用c/c++写代码时:
敲代码时,要遵守语言规则,语言和操作系统的歧义,在标准c下时,系统和编译器会解决。
在windows中当我们用键盘敲ENTER键(行末结束),然后从中读到\r\n时,标准流会使之转换为\n,符合c/c++代码,而当我们往代码中写入了\n时,在编译时,标准流使之转换为了\r\n。
C的控制台程序在加载进内存成为进程运行前C运行时库自动打开三个设备并关联到三个流:标准输入流stdin,标准输出流stdout,标准出错流stderr
通常在通用计算机中,没有重定向前这三个流对应的设备是:键盘,显示器,显示器。这三个都是字符设备,所以是以文本文件的模式打开的windows下当我们在键盘上敲入回车键时产生字符\r\n,但是在OS内核把键盘驱动中读到的字符发送给流的缓冲区时流会将之转换为\n,当我们向控制台输出\n时流将之转换为\r\n再传递至内核,当我们绕过标准输入输出直接调用windows中coredll.lib进行控制台输入输出时就必须面对这一现实,程序员负责实现这一转换。
因为流只对文本文件进行换行表示的转换,以二进制模式打开流(可以在文件操作时,如,fopen(......,"wb");)不会做任何处理,所以当你以二进制模式打开一个文本文件时将产生错乱,通过程序往文本文件里写入'\n'也不会被转换,而是显示为黑框,你必须亲自将\n解释为\r\n,同样的问题也会出现在以文本模式打开二进制文件的情况。
符号 ASCII码 意义
\n 10(0A) 换行NL(光标往下一行(不一定到下一行行首),n的英文newline,控制字符可以写成LF,即Line
Feed)
\r 13 (0D) 回车CR(光标重新回到本行开头,r的英文return,控制字符可以写成CR,即Carriage
Return)
在c/c++中:
符号 ASCII码 意义
\n 10(0A) 回车换行,光标移到下一行行首
\r 13 (0D) 回车不换行,光标移到本行行首
对于行末结束,操作系统中:
windows:\r\n
unix:\n
mac os:\r
一,浏览文件时:
unix和mac os文本文件在windows中,所有文字会变成一行,因为,windows中要回车符+换行符("\r\n")才会回车+换行,缺少一个控制符或者顺序不对都不能正确的另起一行,原来的\n,\r由于不是可打印字符,会出现黑框。
Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。
二,用c/c++写代码时:
敲代码时,要遵守语言规则,语言和操作系统的歧义,在标准c下时,系统和编译器会解决。
在windows中当我们用键盘敲ENTER键(行末结束),然后从中读到\r\n时,标准流会使之转换为\n,符合c/c++代码,而当我们往代码中写入了\n时,在编译时,标准流使之转换为了\r\n。
C的控制台程序在加载进内存成为进程运行前C运行时库自动打开三个设备并关联到三个流:标准输入流stdin,标准输出流stdout,标准出错流stderr
通常在通用计算机中,没有重定向前这三个流对应的设备是:键盘,显示器,显示器。这三个都是字符设备,所以是以文本文件的模式打开的windows下当我们在键盘上敲入回车键时产生字符\r\n,但是在OS内核把键盘驱动中读到的字符发送给流的缓冲区时流会将之转换为\n,当我们向控制台输出\n时流将之转换为\r\n再传递至内核,当我们绕过标准输入输出直接调用windows中coredll.lib进行控制台输入输出时就必须面对这一现实,程序员负责实现这一转换。
因为流只对文本文件进行换行表示的转换,以二进制模式打开流(可以在文件操作时,如,fopen(......,"wb");)不会做任何处理,所以当你以二进制模式打开一个文本文件时将产生错乱,通过程序往文本文件里写入'\n'也不会被转换,而是显示为黑框,你必须亲自将\n解释为\r\n,同样的问题也会出现在以文本模式打开二进制文件的情况。
相关文章推荐
- 回车与换行的区别
- 回车(CR)与换行(LF), '/r'和'/n'的区别
- 回车换行的区别
- 回车(CR)与换行(LF), '\r'和'\n'的区别
- 回车与换行的区别
- 回车与换行的区别
- 回车和换行的区别
- C语言中空格符、空字符、字符数组结束符、换行、回车的区别
- Linux下回车与换行的区别
- 在汇编语言里面,回车和换行的区别
- windows与unix/linux下输入回车换行的区别
- 回车和换行的区别(Linux程序设计第4版)
- 换行和回车的区别
- 回车和换行的区别
- wins和Linux下回车换行的区别
- 今天,我总算搞清楚\r“回车”(carriage return)和\r“换行”(line feed)这两个概念的来历和区别了。
- 回车和换行的区别
- 有关回车和换行的区别
- C++中回车换行(\n\r)和换行(\r)的区别
- 换行和回车的区别