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

有了解这个情况的大佬吗?是关于fwrite()函数的问题

有了解这个情况的大佬吗?是关于fwrite()函数的问题

C# C
一只斗牛犬 2021-10-21 19:15:32
fwrite(string, strlen(string), 1, stream)此处的“1”代表读入一个srtlen(string)长度,该函数为什么不直接在strlen(string)处通过乘以n来获得需要写入到string中的具体字符数。
查看完整描述

2 回答

?
Smart猫小萌

TA贡献1911条经验 获得超7个赞

size_t fwrite ( const void * ptr, size_t size, size_t count, FILE * stream );
ptr
要写入文件的对象指针,转换成 const void*形式。
size
指的是指针所指对象的每个元素长度。
count
指针所指对象的元素个数。
stream
文件对象的指针。

例如:
const char * string = "Test here.";
FILE* filestream = ...;
fwrite( string, sizeof(char), strlen(string), filestream );

需要写的指针是 string,指针指向的是字符串,就是 char 的数组对象,
所以第二个参数 是char的长度,就是 1,第三个参数是 数组长度,就是字符串个数 strlen(string)

查看完整回答
反对 回复 2021-10-24
?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

fwrite并非是专用来写字符串的一个函数,它一般是用来对结构体等的文件写入!
而在写结构体等,有时需要写入好几个结构体,第三个参数是用来给写多个方便用的!

还有点,你的第二个参数未必所有的都可行!...第二个参数要用sizeof函数取得要写入文件内容的大小的,因为一般情况下char==1字节...strlen又是得到字符串的长度,所以才能成功...假如char==2字节就只能写入一半了!

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

添加回答

举报

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