C中fopen打开方式r和rb的区别

情境:

文件:png图片,前8个字节是:

89 50 4E 47 0D 0A 1A 0A

 

如果以如下代码来获取前8个字节

char buffer[8] = {0};

FILE* fp = fopen("png.png", "r");

fread(buffer, 8, 1, fp);

fclose(fp);

 

那么8个字节是:

89 50 4E 47 0A 00 00 00

 

如果是rb打开方式可以得到正确的结果

哎.... 这个让我郁闷的啊~~

在 C 语言,`fopen` 函数用于打开一个文件,并返回一个文件指针。该函数的原型如下: ```c FILE *fopen(const char *filename, const char *mode); ``` 其,`filename` 是要打开的文件名,`mode` 是打开文件的模式。 在这个例子,`fopen("my.bat", "rb+")` 的含义是以二进制读写模式打开名为 `my.bat` 的文件。 如果需要打开一个文本文件,可以使用以下模式之一: - `r`:以只读模式打开文本文件。 - `w`:以写模式打开文本文件。如果文件存在,则会清空文件内容。 - `a`:以追加模式打开文本文件。如果文件不存在,则会创建一个新文件。 - `r+`:以读写模式打开文本文件。 - `w+`:以读写模式打开文本文件。如果文件存在,则会清空文件内容。 - `a+`:以读写模式打开文本文件。如果文件不存在,则会创建一个新文件。 如果需要打开一个二进制文件,可以在以上模式后添加 `b` 标识符,如下所示: - `rb`:以只读模式打开二进制文件。 - `wb`:以写模式打开二进制文件。如果文件存在,则会清空文件内容。 - `ab`:以追加模式打开二进制文件。如果文件不存在,则会创建一个新文件。 - `rb+`:以读写模式打开二进制文件。 - `wb+`:以读写模式打开二进制文件。如果文件存在,则会清空文件内容。 - `ab+`:以读写模式打开二进制文件。如果文件不存在,则会创建一个新文件。 因此,`fopen("my.bat", "rb+")` 是以二进制读写模式打开一个二进制文件,而打开一个文本文件,则需要使用不带 `b` 标识符的模式。例如,使用 `fopen("my.txt", "r")` 可以以只读模式打开一个文本文件。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值