fwrite()函数的问题,语法

fwrite(string,strlen(string),1,stream)此处的“1”代表读入一个srtlen(string)长度,该函数为什么不直接在strlen(s... fwrite(string, strlen(string), 1, stream)

此处的“1”代表读入一个srtlen(string)长度,该函数为什么不直接在strlen(string)处通过乘以n来获得需要写入到string中的具体字符数。
展开
 我来答
zitsen
推荐于2016-12-01 · TA获得超过226个赞
知道答主
回答量:61
采纳率:0%
帮助的人:63.8万
展开全部
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)
追问
q请教一下,const char *string; 然后你又向string指向的地方做写操作可行吗?
因为const的作用,string现在可以指向别处,但是它现在所指向的内容应该是不能修改的不是吗?
追答
const char* string之后当然就不能修改了,三行程序中第一行是赋值,没有问题,另外两行都没有对string指针指向的内容做写操作,fwrite的写操作是针对 FILE*。
第一行的赋值可以不用const, 直接char* string=就可以了,现在就看着舒服了吗?
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
夏天的青云
2012-11-15 · TA获得超过293个赞
知道小有建树答主
回答量:200
采纳率:0%
帮助的人:275万
展开全部
fwrite并非是专用来写字符串的一个函数,它一般是用来对结构体等的文件写入!
而在写结构体等,有时需要写入好几个结构体,第三个参数是用来给写多个方便用的!

还有点,你的第二个参数未必所有的都可行!...第二个参数要用sizeof函数取得要写入文件内容的大小的,因为一般情况下char==1字节...strlen又是得到字符串的长度,所以才能成功...假如char==2字节就只能写入一半了!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yuhaiming_0906
2012-11-15 · TA获得超过199个赞
知道小有建树答主
回答量:285
采纳率:0%
帮助的人:152万
展开全部
哈哈!这个想法是好的,没办设计C的人就是这么设计的。不过也是相当有道理的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式