C/C++文本打开和二进制打开文件
4件事:
1、对包括Linux在内的所有POSIX标准的系统而言b字符没有任何实际用处,也就是说不分文本打开还是二进制打开,这时加上b只是为了兼容性;
2、对windows来说,使用二进制打开文件和使用文本方式打开,唯一的区别就是: 在使用fprintf写入\n时,会自动在其前面加上\r
3、数据怎么在磁盘上写不是由文件打开方式决定的,而是由写函数决定的。数据怎么从磁盘上读也不是由文件打开方式决定的,而是由读函数决定的。
a.fread(buffer,size,count,fp),fwrite(buffer,size,count,fp)。二进制方式读写。
b.fprintf函数和fscanf函数,文本方式读写。
4、在 C语言,或更精确地说成 C标准函式库中,有一个特别的字符EOF(stdio.h中这个定义#define EOF (-1)),它表示:文件结束符(end of file)。在while循环中以EOF作为文件结束标志,这种以EOF作为文件结束标志的文件,必须是文本文件。在文本文件中,数据都是以字符的ASCII代码值的形式存放。我们知道,ASCII代码值的范围是0~255,不可能出现-1,因此可以用EOF作为文件结束标志。但是,C语言中,当把数据以二进制形式存放到文件中时,就会有-1值的出现,此时不能采用EOF作为二进制文件的结束标志。为解决这个问题,ANSI C提供一个feof函数,用来判断文件是否结束。如果遇到文件结束,函数feof(fp)的值为1,否则为0.
feof函数既可用以判断二进制文件是否结束,也可以用以判断文本文件是否结束。
参考链接:
https://blog.csdn.net/woaiyuanqi/article/details/84599885
http://cxd2014.github.io/2017/03/10/fopen/