> 文章列表 > fwrite和fprintf的区别

fwrite和fprintf的区别

fwrite和fprintf的区别

`fwrite` 和 `fprintf` 是 C 语言中用于文件操作的函数,它们的主要区别在于写入文件的方式:

1. `fwrite`:

用于以二进制形式写入数据到文件。

函数原型为 `size_t fwrite(const void* buffer, size_t size, size_t count, FILE* stream)`。

`buffer` 是要写入数据的内存地址。

`size` 是每个数据元素的大小(以字节为单位)。

`count` 是要写入的数据元素个数。

`stream` 是指向 `FILE` 对象的指针,该对象指定了一个输出流。

返回值是实际写入的数据项数。

2. `fprintf`:

用于以文本形式(格式化)写入数据到文件。

函数原型为 `int fprintf(FILE* stream, const char* format, ...)`。

`stream` 是指向 `FILE` 对象的指针,该对象指定了一个输出流。

`format` 是格式字符串,用于控制数据的输出格式。

可以跟随可变参数列表,将数据按照格式字符串指定的格式写入文件。

返回值是输出的字符数,发生错误时返回一个负值。

举例来说,如果你想将整数 `64` 写入文件,使用 `fwrite` 的方式是直接写入该整数的二进制表示,而使用 `fprintf` 则会先将整数转换为字符串(\"6\" 和 \"4\"),然后写入文件。因此,用文本编辑器打开文件时,`fwrite` 写入的 \"64\" 会显示为乱码,而 `fprintf` 写入的 \"6\" 和 \"4\" 则显示为正常的字符。

希望这解答了你的问题,

其他小伙伴的相似问题:

fprintf函数如何处理格式化输出?

fscanf与fprintf的主要区别是什么?

如何避免fwrite函数受到fseek的影响?