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 的最低有效字节。 在大端计算机上,它是最重要的字节。