如果我有一段代码可以像这样写出文本:write(1, buf, bytes);
为什么写入文件时不一样 fwrite(1 , buf, bytes,f1);
?
其中 f1
声明为 FILE *f1;
和 f1=fopen("Test.txt", "wb");
。我正在查看的教程表明它应该有效。我是 C# 编码员而不是 C 编码员,我希望得到一些帮助。
最佳答案
fwrite
的签名是:
fwrite(const void * ptr, size_t size, size_t count, FILE * stream );
write 的签名是:
write(int fd, const void *buf, size_t count);
如果您匹配示例,您会发现参数不匹配。
count of write
应该是 size*count
of fwrite
(它让你指定你正在写的每个元素的大小)。另外 write 有一个硬编码为 1 的文件描述符,你用从 fopen
获得的 FILE*
替换它,你怎么知道 1
是指的是那个文件?
关于c - write 和 fwrite 的区别 不一样的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20436821/