为了账号安全,请及时绑定邮箱和手机立即绑定

请教一下,关于c语言fwrite函数及地址的问题,麻烦帮忙看看哦!

请教一下,关于c语言fwrite函数及地址的问题,麻烦帮忙看看哦!

C PHP
MMTTMM 2021-10-20 18:15:30
wdata=0xa5;fwrite(&wdata,sizeof(char),1,filedir);请问这两句话什么意思?谢谢补充一点:char wdata;
查看完整描述

3 回答

?
米脂

TA贡献1836条经验 获得超3个赞

size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );

(1)buffer:是一个指针,对fwrite来说,是要输出数据的地址;
(2)size:要写入内容的单字节数;
(3)count:要进行写入size字节的数据项的个数;
(4)stream:目标文件指针;
(5)返回实际写入的数据项个数count。
fwrite(&wdata,sizeof(char),1,filedir);

所以这个是将0xa5这个字符写入filedir指向的文件中。
&wdata这个是取wdata的地址。
sizeof(char)这个表示取的单位长度为一个char的长度,也就是1。
1说明只取一个单位长度,也就是说从&wdata地址开始取一个字符也就是0xa5。
filedir这个是FILE指针,指向一个已经打开了的文件。



查看完整回答
反对 回复 2021-10-24
?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

你好,是这样的

size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );
(1)buffer:是一个指针,对fwrite来说,是要输出数据的地址;
(2)size:要写入内容的单字节数;
(3)count:要进行写入size字节的数据项的个数;
(4)stream:目标文件指针;
(5)返回实际写入的数据项个数count。
这是函数原型定义 即参数含义

wdata=0xa5; 不知道你定义的这个是不是赋值地址语句
wdata = "0xa5" 这样是0xa5是字符串赋值给了wdata
wata = 0xa5 这样写的话,0xa5就是一个十六进制的地址的形式
fwrite(&wdata,sizeof(char),1,filedir); //这句话的意思就是 把wdata这个地址中的内容,放入到filedir中,大小是sizeof(char) 个数是1 这句话的意思就是向文件中写数据的

不赞同,Parthas这个人的回答,他的“所以这个是将0xa5这个字符写入filedir指向的文件中。”
这句话是有错的,不是将0xa5写入指定的文件,如果你是要写入0xa5字符串的话,应该定义wdata = "0xa5"而不是wdata = 0xa5



查看完整回答
反对 回复 2021-10-24
?
阿波罗的战车

TA贡献1862条经验 获得超6个赞

wdata=0xa5;
fwrite(&wdata,sizeof(char),1,filedir);
就是把字符'\a5',也就是ASCII表中的序号为0xa5的字符写到文件里,看filedir的名字好像是在写目录。那应该是文件的属性Attrib吧

查看完整回答
反对 回复 2021-10-24
  • 3 回答
  • 0 关注
  • 236 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信