Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C语言中的fwrite函数_C - Fatal编程技术网

C语言中的fwrite函数

C语言中的fwrite函数,c,C,fwrite函数用于二进制写入 fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream); 这里,“size_t size”中的大小表示字节,即fwrite()写入数据的nmemb元素,每个“size”字节长 “大小”可以是1字节,也可以是更多字节。对于2字节的int,如果我们给'size'1字节, 这个整数是怎么写的?可能写的整数是错的?或者,在写入整数并将大小值设置为2时,我们应该注意这个问题?写入的字节数将是nmem

fwrite函数用于二进制写入

fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);
这里,“size_t size”中的大小表示字节,即fwrite()写入数据的nmemb元素,每个“size”字节长

“大小”可以是1字节,也可以是更多字节。对于2字节的int,如果我们给'size'1字节,
这个整数是怎么写的?可能写的整数是错的?或者,在写入整数并将大小值设置为2时,我们应该注意这个问题?

写入的字节数将是nmemb*size

要不是ints,你会写

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

(由于int的大小取决于编译器-通常为4字节)

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

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

fwrite有一个奇怪的接口,但它所做的只是写入大小*nmemb字节。您可以写入(ptr,1,4,fp)或(ptr,4,1,fp),您将获得相同的输出


如果您写入(ptr,1,1,fp),您将获得最低内存地址的字节。在小端机器上,这是int的最低有效字节。在大端机器上,它是最高有效字节。

如果
int
在您的框中是2字节,您写入(
nmemb
1字节
和(
size
1字节
您在小端字节框上得到低字节,在大端字节框上得到高字节。两字节整数?你在ZX80上吗?:-)