首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

fopen第二个参数的疑义

2013-03-04 
fopen第二个参数的疑问以fopen(file,r)为例,file文件内容为10,第二个参数表示文本文件以只读方式打开,

fopen第二个参数的疑问
以fopen("file","r")为例,file文件内容为10,第二个参数表示文本文件以只读方式打开,是不是说在内存中以字符‘1’,‘0’的二进制形式保存?fopen("file","rb")以二进制文件打开,是不是表示在内存中以整数10的二进制保存?但用fgetc取得内存中的数据,以printf输出,结果都一样,所以很费解,还望各位大侠,帮忙解惑,谢谢 fopen第二个参数的疑问
[解决办法]
不是,就算是使用二进制打开,10在内存中存储的也是十六进制的'0x31'和'0x30'。
不管使用"r"还是"rb"打开文件,关键你文件中存储的内容是占用了两个字节,即'0x31'和'0x30'。你可以使用UltraEdit打开查看。

使用"r"和rb"的区别在于遇到转义字符怎么处理,比如'\n',使用"r"打开,就表示这是一个换行,而使用"rb"打开,这这是一个无意义的16进制数据'0x0A'.

你陷进牛角尖了,重点从"r"和rb"的区别来理解这两个参数。
[解决办法]
打开方式决定你读写方式,不同的打开方式确定需要用那些库函数去操作文件。
[解决办法]
关键是看你怎么读的?如果用的是fread,读出来的数据就是二进制形式的!

热点排行