【C语言】fwrite函数用法介绍
- 创业
- 2025-08-29 04:12:01

目录
一、函数原型
二、参数解析
三、返回值
四、核心特性
五、案例代码
案例1:写入字符串到文件
案例2:写入整型数组到二进制文件
案例3:写入结构体数据
六、注意事项
一、函数原型
作用:将内存中的数据块以二进制形式写入文件,适用于非文本数据(如结构体、数组等)。
size_t fwrite(const void *ptr, size_t size, size_t count, FILE *stream); 二、参数解析 ptr 类型:const void*作用:指向待写入数据的缓冲区首地址,可以是数组、结构体或动态分配的内存块。示例:int data[] = {1,2,3}; fwrite(data, ...) size 类型:size_t作用:单个数据项的字节大小,通常用sizeof运算符获取(如sizeof(int))。注意:若数据项为数组元素,需计算单个元素大小而非整个数组。 count 类型:size_t作用:要写入的数据项数量。例如数组长度为5时,count设为5。 stream 类型:FILE*作用:目标文件指针,需通过fopen以二进制模式(如"wb"、"ab")打开。 三、返回值 成功时返回实际写入的数据项数量(非字节数)。失败时返回值可能小于count,需结合feof或ferror检查错误。四、核心特性 二进制操作:默认处理二进制数据,适合图像、结构体等非文本内容。写入位置:由文件打开模式决定: "w+":从文件头覆盖写入。"a+":追加到文件末尾。 缓冲区同步:写入后需调用fflush(stream)或fclose(stream)确保数据持久化。
五、案例代码 案例1:写入字符串到文件
代码实例如下:(不适用fopen进行打开文件原因,详见C4996报错)
#include <stdio.h> int main() { FILE* fp; if (fopen_s(&fp, "data.txt", "wb") != 0) { perror("File error"); return -1; } char buffer[] = "Hello, fwrite!"; size_t written = fwrite(buffer, sizeof(char), sizeof(buffer), fp); if (written != sizeof(buffer)) { printf("Write error\n"); } fclose(fp); return 0; }代码执行结果:
见文件内容写入到了工程目录下的data.txt文件中。
案例2:写入整型数组到二进制文件代码实例如下:
#include <stdio.h> int main() { FILE *fp; if (fopen_s(&fp, "numbers.bin", "wb") != 0) { perror("File error"); return -1; } int data[] = {10, 20, 30, 40, 50}; size_t count = sizeof(data) / sizeof(int); size_t written = fwrite(data, sizeof(int), count, fp); if (written != count) { printf("Partial write\n"); } fclose(fp); return 0; }代码执行结果:
使用WinHex软件打开工程目录下新生成的numbers.bin文件,可以到数据已经写入到文件中了,并且以十六进制显示。由于每个int数据是4字节,所有文件中是32bit。
案例3:写入结构体数据代码实例如下:
#include <stdio.h> typedef struct { int id; char name[20]; float score; } Student;//创建结构体 int main() { Student stu = { 101, "Alice", 95.5 };//结构体初始化 FILE *fp; if (fopen_s(&fp, "student.txt", "wb") != 0) { perror("File error"); return -1; } size_t written = fwrite(&stu, sizeof(Student), 1, fp); fclose(fp); return 0; }代码执行结果:
六、注意事项 二进制模式:写入非文本数据时使用"wb"或"ab"模式,避免换行符转换问题参考文章。数据对齐:结构体成员可能有内存对齐问题,建议使用#pragma pack(1)取消填充参考文章。跨平台兼容:二进制文件在不同系统间可能存在字节序差异(如小端存储)参考文章。
【C语言】fwrite函数用法介绍由讯客互联创业栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“【C语言】fwrite函数用法介绍”