C语言文件中,“rb”和“r”有什么区别?

Python012

C语言文件中,“rb”和“r”有什么区别?,第1张

一、作用不同

1、rb:代表二进制文件,用来读写二进制文件。

2、r:代表文本文件,用来读写文本文件。

二、特点不同

1、rb:文件编码是变长的,灵活利用率要高,而译码要难一些,不同的二进制文件译码方式是不同的。

2、r:是一种典型的顺序文件,其文件的逻辑结构又属于流式文件。

三、优劣不同

1、rb:二进制文件比较节约空间,这两者储存字符型数据时并没有差别。但是在储存数字,特别是实型数字时,二进制更节省空间。

2、r:文本文件存在于计算机系统中,通常在文本文件最后一行放置文件结束标志。文本文件的编码基于字符定长,译码相对要容易一些。

参考资料来源:百度百科-二进制文件

参考资料来源:百度百科-文本文件

1、\r在c语言中属于转义字符,首先它是一个字符,其次表现的形式是转义表达。因此用法和常规的字符常量用法一样。

比如下面的代码:

#include

int main()

{

printf("%c\n", '\r')

return 0

}2、用于表示行末结束符,回车和换行在不同的系统有不同的表示方法:

\n:

UNIX

系统行末结束符

\n\r:

window

系统行末结束符

\r:

MAC

OS

系统行末结束符

因此,在使用的时候要注意C语言编写的程序所运行的系统平台。

\r是回车(CR) ,将当前位置移到本行开头,ASCII码值(十进制)为013。

区别:

1、是否换行

'\r' 回车,回到当前行的行首,而不会换到下一行,如果接着输出的话,本行以前的内容会被逐一覆盖;'\n' 换行,就是输入完一行内容后,光标转到下一行的起始位置 ,不会回到行首。

例如:printf("first line\n")

2、表现不同

Unix系统里,每行结尾只有“<换行>”,即"\n";Windows系统里面,每行结尾是“<回车><换行>”,即“\r\n”;Mac系统里,每行结尾是“<回车>”,即"\r";。

3、不同系统打开会不同

Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。

参考资料:

百度百科-换行符