C++中回车换行(\n\r)和换行(\r)的区别
来源:互联网 发布:广州沙河网络批发市场 编辑:程序博客网 时间:2024/05/31 00:39
转载自http://blog.csdn.net/xiaofei2010/article/details/8458605
为什么会有这种区别呢?
毕竟是源自Unix系统,C语言中使用\n表示换行,而在实际的文件中换行符号需要同操作系统一致,所以当我们在C中使用fopen打开一个文本文件时流实现了实际换行符与C中\n之间的转换。在windows中当我们用fopen打开文本文件,然后从中读到\r\n时流会转换为\n,而当我们往文件中写入\n时流会转换为\r\n。程序一是打开文本文件,程序二打开的是二进制文件,因为流只对文本文件进行换行表示的转换,以二进制模式打开流不会做任何处理。所以当你以二进制模式打开一个文本文件时将产生错乱,你必须亲自将\r\n解释为\n,同样的问题也会出现在以文本模式打开二进制文件的情况.这也解释了为什么Unix类系统中的文件不区分文本文件和二进制文件的原因。当我们使用标准输入输出函数时有这种情况吗?
再回到我们熟悉的标准输入输出stdin,stdout
C的控制台程序在加载进内存成为进程运行前C运行时库自动打开三个设备并关联到三个流:标准输入流stdin,标准输出流stdout,标准出错流stderr
通常在通用计算机中,没有重定向前这三个流对应的设备是:键盘,显示器,显示器。这三个都是字符设备,所以是以文本文件的模式打开的,在windows下当我们在键盘上敲入回车键时产生字符\r\n,但是在OS内核把键盘驱动中读到的字符发送给流的缓冲区时流会将之转换为\n,当我们向控制台输出\n时流将之转换为\r\n再传递至内核,当我们绕过标准输入输出直接调用windows中coredll.lib进行控制台输入输出时就必须面对这一现实,程序员负责实现这一转换。
0 0
- C++中回车换行(\n\r)和换行(\r)的区别
- C++中回车换行(\n\r)和换行(\r)的区别
- C++中回车换行(\n\r)和换行(\r)的区别
- C++中回车换行(\n\r)和换行(\r)的区别
- C++中回车换行(\n\r)和换行(\r)的区别
- C++中回车换行(\n\r)和换行(\r)的区别
- 回车/r和换行/n的区别
- C语言 \r (回车) 和 \n (换行) 区别
- 回车(\r)、换行(\n)区别
- C++中换行(‘\n’)和回车('\r')的区别
- 回车\r和换行\n
- \r\n 回车和换行
- 回车(CR)与换行(LF), '/r'和'/n'的区别
- 回车(CR)与换行(LF), '/r'和'/n'的区别
- 回车(CR)与换行(LF), '/r'和'/n'的区别?
- ASCII码表(回车/r和换行/n的区别)
- 回车(CR)与换行(LF), '/r'和'/n'的区别
- 回车(CR)与换行(LF), '\r'和'\n'的区别
- STM32通过读取芯片唯一ID号来实现程序的保护,防止被抄袭
- ext4之Makefile
- CSS中margin和padding的区别
- delphi 跟 WebBrowser 中JS 交互思路
- mysql源码安装
- C++中回车换行(\n\r)和换行(\r)的区别
- 【CDP-云设计模式】第8章,4.预定的自动伸缩模式(Scheduled Autoscaling Pattern)
- 不写总结不睡觉学习日志第三篇
- Codeforces Round #374 (Div. 2) C. Journey dp
- pt、px和em
- 【数据结构】——包围法遍历二叉树
- Intel Code Challenge Elimination Round (Div.1 + Div.2, combined)
- 丢瓶盖
- Debug与Release版本的区别