C 语言中的 fwrite 函数

  • 本文关键字:fwrite 函数 语言 c
  • 更新时间 :
  • 英文 :


fwrite函数用于二进制写入。

fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);

这里的 size 在 "size_t size" 中表示字节,即 fwrite() 写入数据的 nmemb 元素,每个"大小"字节长。

"大小"可以是 1 个字节,也可以是更多字节。因此,对于 2 个字节的 int,如果我们给"size"1 个字节,这个整数是怎么写的?可能写成整数是错误的?或者我们应该在写入整数并将大小值设置为等于 2 时处理它?

当你使用 fwrite 编写 int 数组时,你将需要使用:

size_t num = fwrite(array, sizeof(int), arraySize, file);
if ( num != arraySize )
{
    // Deal with the error condition.
}

写入的字节数将是 nmemb * 大小。

但是对于整数,你会写

fwrite(buffer, sizeof(int), number_of_ints, file);

(因为整数的大小取决于编译器 - 通常为 4 个字节)

fwrite有一个奇怪的界面,但它所做的只是写入大小* nmemb字节。 你可以写(ptr, 1, 4, fp)或(ptr, 4, 1, fp),你会得到相同的输出。

如果你写(PTR,1,1,FP),你将得到最低内存地址的字节。 在小端机器上,这是 int 的最低有效字节。 在大端计算机上,它是最重要的字节。

最新更新