中易网

C语言问题fwrite和fprintf

答案:2  悬赏:50  
解决时间 2021-03-12 14:32
fwrite和fprintf
最近对一下函数搞的不太明白,如fwrite是把指针所指的字节输出到指定的文本文件,为什么输出的是乱码?fprintf是指定的值输出到指定的文本文件,它们有什么不同?
怎么才能把它们弄明白,有什么好方法或是书吗?
请高手指点啊!
最佳答案
fwrite是向流中写入数据,而fprintf是向流中写入格式数据。两者的共同点为向流中写入数据,至于区别可以看看两者的申明:
size_t fwrite(
const void *buffer,
size_t size,
size_t count,
FILE *stream
);
int fprintf(
FILE *stream,
const char *format [,
argument ]...
);
前者fwrite写入流stream中的数据是buffer指定的内容,内容的字节大小分别由size和count两个参数来指定,因此写入流stream中的内容有可能是乱码,但是有效的数据。
后者fprintf写入流stream中的数据则由argument来指定,并且这些argument的内容分别由format指定的格式来显示,因此写入stream的内容通常来说是文本字符流,当然,也允许写入格式乱码。
两者都可以将文本写入流stream中。比如:
fwrite("Hello world!", 1, 12, fp);

fprintf(fp, "%s", "Hello world!");
等价。
全部回答
看你的代码,只写了一次,想反复写入自然要执行多次fwrite函数,执行次数如果已知一般用for循环,次数未知但是结束写入的条件知道一般用while循环,举个简单例子: int i=0; for(i; i<10; i++) fwite(outfile,strlen(outfile),1,fp); 这里就会写入10次outfile到文件流fp中,如果打开方式是w+(追加),自然能看到写入的10次数据。 你在多次写入时不要多次打开,就是循环语句不要把fopen函数也包含起来。 写入方式: w 写 + 追加 b 二进制 wb+ :以追加写方式打开二进制文件,文件存在则追加,不存在则创建。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
一套桌椅80元,凳子比桌子40%,一把凳子多少
宁波北仑有几个建材市场
新长安之星转速自已升高是怎么回事
求mac版Cisco packet tracer!!
巴黎协和广场摩天轮价格
搭阳台用304不锈钢好还是镀锌方钢好
作文题“让...像小河一样流走”谁能告诉我咋
危险废物上岗证怎么考
用过佰肤草面膜三个月后,感觉皮肤变薄了!这
哪个版本的WIN PE比较好点,我想把它当日常系
结婚十年中主演是江一燕吗
欧雅布艺生活馆地址在什么地方,想过去办事
写土豆品质的作文200字
洞爷湖有什么好玩的地方
金汉亭韩式自助烤肉火锅(乐客来广场店)地址有
推荐资讯
雨神防水我想知道这个在什么地方
有没有轮滑大神方便加个微信或qq,有问题求解
牵手一生婚庆地址在什么地方,想过去办事
突泉县财政局怎么去啊,有知道地址的么
描写秋天景色的诗10首(还要带注释)
上海服装集团进出口有限公司我想知道这个在什
五鼠闹东京电视剧,第二集5分钟处,白玉堂坐
想开个针灸店!请问有风险吗?需要注意什么?
张祖伟拉丁舞(郑母店)地址好找么,我有些事要
中国海洋大学与湖南大学学习氛围哪家好
工伤保险缴费比例,2015年工伤保险缴费基数是
+2195528是什么电话
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?