fwrite和fprintf
最近对一下函数搞的不太明白,如fwrite是把指针所指的字节输出到指定的文本文件,为什么输出的是乱码?fprintf是指定的值输出到指定的文本文件,它们有什么不同?
怎么才能把它们弄明白,有什么好方法或是书吗?
请高手指点啊!
C语言问题fwrite和fprintf
答案:2 悬赏:50
解决时间 2021-03-12 14:32
- 提问者网友:她是我的お女人
- 2021-03-11 17:50
最佳答案
- 二级知识专家网友:爱情是怎么炼成的
- 2021-03-11 19:07
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!");
等价。
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!");
等价。
全部回答
- 1楼网友:深街酒徒
- 2021-03-11 20:35
看你的代码,只写了一次,想反复写入自然要执行多次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+ :以追加写方式打开二进制文件,文件存在则追加,不存在则创建。
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |