php fopen wb w,fopen中w w + wb之间的区别:

2212f6e63c930c20f239c043e0832de0.png

char buf [10] = {10,10,10,10,10,10,10,10,10,10};

FILE * fp = fopen(“ c: \\ test.dat”fopen wb 权限,“ w”);

fwrite(buffopen wb 权限,1,10,fp);

fclose(fp);

FILE * fp1 = fopen(“ c: \\ test1.dat”,“ wb”);

7-810-jpg_6-1080-0-0-1080.jpg

fwrite(buf,1,10,fp);

fclose(fp1);

我们注意到程序的第一段定义了一个数组,每个组成部分的值均为10,等效的十六进制为0A.

在第二段中,首先打开文件test.dat进行写入,然后将10个数据写入该文件,最后关闭该文件.

第三段具有相似的功能,除了文件名更改为test1.dat,并将打开文件的模式更改为wb.

2385d1bed877674862598e2633d3f53a.png

第二段和第三段有什么区别?让我们看一下最终文件的内容:

测试日期: 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A 0D 0A

test1.dat: 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A 0A

为什么?这是w和wb之间的差异. W以文本模式打开文件,wb以二进制模式打开文件. 在文本模式下打开文件时,只要fwrite函数遇到0x0A,它就会在文件前面添加0x0D. 其他内容不执行添加操作.

r要以只读方式打开文件,该文件必须存在.

4810eded6f121377a7c30e9cd7783a2f.png

r +该文件必须处于打开状态才能进行读取和写入. 该文件必须存在.

rb +读写打开一个二进制文件. 仅允许读写数据.

rt +读写打开一个文本文件,允许读写.

w打开一个只写文件. 如果文件存在,则将文件长度清除为0,即文件内容将消失. 如果文件不存在,请创建它.

w +打开一个可读可写的文件. 如果文件存在,则将文件长度清除为零,即文件内容将消失. 如果文件不存在,请创建它.

50bdf039c1b5ff23823632d666e30647.png

a使用其他方式打开只写文件. 如果文件不存在,将创建它. 如果文件存在,则写入的数据将被添加到文件的末尾,即,文件的原始内容将被保留. (保留EOF字符)

a +打开一个可读可写的文件作为附件. 如果文件不存在,将创建它. 如果文件存在,则写入的数据将被添加到文件的末尾,即,文件的原始内容将被保留. (不保留原始EOF字符)

wb只写打开或创建一个新的二进制文件;仅允许写入数据.

wb +读写打开或创建一个二进制文件,允许读写.

wt +读写打开或创建一个文本文件;允许读写.

at +读写打开一个文本文件,允许读取数据或将数据附加到文本的末尾.

ab +读写会打开一个二进制文件,从而允许在文件末尾读取或追加数据.

以上所有形态字符串均可添加b字符,例如rb,w + b或ab +. 添加了b字符以告知库将其作为二进制文件而不是纯文本文件打开. 但是,在POSIX系统(包括Linux)上,将忽略此字符. 由fopen()创建的新文件将具有S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH(0666)权限. 此文件权限也将引用umask值.

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/jisuanjixue/article-157592-1.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值