如果我有一段代码写出这样的文字:write(1, buf, bytes);
为什么写入文件fwrite(1, buf, bytes,f1);
不起作用?
f1
被声明为FILE *f1;
和f1=fopen("Test.txt", "wb");
的位置。我正在看的教程表明它应该工作。我是C#编码器而不是C编码器,我希望得到一些帮助。
答案 0 :(得分:2)
fwrite
的签名是:
fwrite(const void * ptr, size_t size, size_t count, FILE * stream );
写作的签名是:
write(int fd, const void *buf, size_t count);
如果符合您的示例,您会看到该参数不匹配。
write
的计数应为size*count
的{{1}}(可让您指定要编写的每个元素的大小)。另外,write有一个硬编码为1的文件描述符,你用从fwrite
获得的FILE*
替换,你怎么知道fopen
指的是那个文件?