【C学习笔记】二进制读写文件
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void WriteText()
{
//初始化一些数据,写入文本文件data.txt;
char * str = "锄禾日当午,\n汗滴禾下土。\n谁知盘中餐,\n粒粒皆辛苦!";
FILE *p = fopen("./data.txt", "w");
if (p == NULL)
{
perror("文件创建失败");
return;
}
fputs(str, p); //fputs 以行的形式写入文件;
fclose(p);
}
typedef struct Hero
{
char *name;
char *id;
int power;
} HERO;
#define HEORNUM 5
void WriteBinaryText() //准备写入二进制数据; 以结构为基本内容;
{
//初始化写入的数据;
HERO hero[HEORNUM] = {
{ "李白", "11111", 100 },
{ "曹操", "22222", 120 },
{ "孙权", "33333", 213 },
{ "西施", "44444", 421 },
{ "孔明", "55555", 856 } };
FILE *pf = fopen("./hero.txt", "wb");//以二进制写入;
if (pf==NULL)
{
perror("创建文件失败");
return;
}
for (int i = 0; i < HEORNUM; i++)
{
fwrite(&hero[i], sizeof(hero[i]), 1, pf);
}
fclose(pf);
printf("文件写入成功!\n");
}
void ReadBinaryText()
{
FILE *pf = fopen("./hero.txt", "rb");
if (pf==NULL)
{
perror("打开文件错误");
return;
}
HERO hero[HEORNUM];
for (int i = 0; i < HEORNUM; i++)
{
fread(&hero[i], sizeof(hero[i]), 1, pf);
printf("name = %-6s id = %-6s power = %-6d\n", hero[i].name, hero[i].id, hero[i].power);
}
fclose(pf);
printf("文件读出完成!\n");
}
void main()
{
void WriteText();
WriteBinaryText();
ReadBinaryText();
system("pause");
}
测试结果: