在C语言开发中,将整数写入文件是常见的文件操作需求,根据存储需求的不同,可以选择文本形式写入或者二进制形式写入,两种方式对应的实现逻辑和适用场景存在差异。

一、核心实现思路
无论采用哪种写入方式,整体流程都分为三个核心步骤:首先使用fopen函数打开目标文件,获取文件指针;然后调用对应的写入函数将整数数据写入文件;最后使用fclose函数关闭文件,释放相关资源,避免数据丢失或资源泄漏。
二、文本形式写入整数
文本形式写入会将整数转换为对应的字符序列存储到文件中,这种方式写入的文件可以直接用文本编辑器打开查看内容,适合需要人工可读存储结果的场景。
实现步骤
- 使用
fopen打开文件,模式选择"w"表示写入文本文件,如果文件不存在会自动创建 - 使用
fprintf函数将整数按照格式输出到文件中,格式控制符使用%d对应整数类型 - 操作完成后调用
fclose关闭文件
示例代码
#include <stdio.h>
int main() {
int num = 12345;
// 打开文件,写入模式
FILE *fp = fopen("text_num.txt", "w");
// 判断文件是否打开成功
if (fp == NULL) {
printf("文件打开失败n");
return 1;
}
// 将整数以文本形式写入文件
fprintf(fp, "%d", num);
// 关闭文件
fclose(fp);
printf("文本形式写入整数成功n");
return 0;
}
上述代码执行后,会在程序运行目录下生成text_num.txt文件,用文本编辑器打开可以看到内容为12345。需要注意的是,文本形式写入会额外存储格式转换后的字符,对于大整数或者大量数据存储时,占用的存储空间会比二进制形式更多。
三、二进制形式写入整数
二进制形式写入是将整数在内存中的二进制表示直接写入文件,不会进行格式转换,存储效率更高,适合存储大量数值数据或者需要精确还原内存数据的场景。
实现步骤
- 使用
fopen打开文件,模式选择"wb"表示写入二进制文件 - 使用
fwrite函数将整数的内存数据直接写入文件,需要传入整数的地址、单个数据大小、写入数据数量、文件指针四个参数 - 操作完成后调用
fclose关闭文件
示例代码
#include <stdio.h>
int main() {
int num = 12345;
// 打开文件,二进制写入模式
FILE *fp = fopen("binary_num.dat", "wb");
// 判断文件是否打开成功
if (fp == NULL) {
printf("文件打开失败n");
return 1;
}
// 将整数以二进制形式写入文件
fwrite(&num, sizeof(int), 1, fp);
// 关闭文件
fclose(fp);
printf("二进制形式写入整数成功n");
return 0;
}
上述代码执行后,会生成binary_num.dat二进制文件,用文本编辑器打开会显示乱码,因为存储的是整数的原始二进制数据。如果需要读取该文件还原整数,只需要使用fread函数按照相同的格式读取即可,数据不会丢失精度。
四、两种方式的对比
为了更清晰地了解两种写入方式的差异,我们可以通过下表进行对比:
| 对比项 | 文本形式写入 | 二进制形式写入 |
|---|---|---|
| 存储内容 | 整数的字符表示 | 整数的内存二进制表示 |
| 可读性 | 文本编辑器可直接查看 | 文本编辑器打开为乱码 |
| 存储效率 | 较低,和整数位数相关 | 较高,固定为int类型大小 |
| 适用场景 | 需要人工查看的简单存储 | 大量数值存储、数据精确还原 |
五、注意事项
- 每次使用
fopen打开文件后,必须检查返回的指针是否为NULL,避免文件打开失败导致的后续操作异常 - 写入操作完成后一定要及时调用
fclose关闭文件,否则可能会导致缓冲区的数据没有真正写入文件,造成数据丢失 - 二进制写入时,
fwrite的第二个参数要准确传入对应类型的大小,避免写入数据不完整 - 如果写入的文件路径包含目录,需要确保目录已经存在,否则文件打开会失败