文章目录
- 1 函数原型
- 2 参数
- 3 返回值
- 4 示例
1 函数原型
fwrite():将ptr指向的内存空间中储存的数据块写入与指定流stream相关联的二进制文件中,函数原型如下:
size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream)
2 参数
fwrite()函数有四个参数:
- 参数ptr是指向某内存空间的指针,该内存空间中储存有待写入文件的数据块;参数ptr类型为void*型,说明ptr可以指向任何数据类型;
- 参数size指定了每个待写入文件的数据项的字节大小,类型为size_t(unsigned int)型;
- 参数count指定了待写入文件的数据项的个数,类型为size_t(unsigned int)型;
- 参数stream是一个指向FILE类型结构的指针;参数stream指定了fwrite()函数要写入的文件流,等于fopen()函数的返回值。
3 返回值
fwrite()函数的返回值类型为size_t(unsigned int)型:
- 写入文件成功,返回成功写入文件的数据项个数,返回值应等于count;
- 写入文件失败,返回值小于count。
C语言标准描述如下:
1. fwrite returns the number of full items actually written, which may be less than count if an error occurs.
2. Also, if an error occurs, the file-position indicator cannot be determined.
4 示例
以两种方式将数组中的内容写入二进制文件,代码如下所示:
#define SIZE 20
int main ()
{
//
int i_arr[SIZE] = { 0 };
int i = 0;
for (i = 0; i < SIZE; i++)
{
i_arr[i] = 2 * i;
}
//
FILE* fp;
if ((fp = fopen("1.dat", "wb")) == NULL)
{
printf("Failed to open file.\n");
exit(1);
}
//
if ((fwrite(i_arr, sizeof(int), SIZE, fp)) != SIZE)
{
printf("Failed to write file.\n");
exit(1);
}
//
if ((fwrite(i_arr, sizeof(i_arr), 1, fp)) != 1)
{
printf("Failed to write file.\n");
exit(1);
}
//
fclose(fp);
return 0;
}
代码运行结果如下图所示:
代码及运行结果分析:
- 第一次调用fwrite()函数,数组i_arr中的每个元素是一个数据项;
- 第二次调用fwrite()函数,数组i_arr整体是一个数据项。