块方式: 直接把内存数据 写入到文件中
typedef struct Teacher
{
char name[64];
int age;
}Teacher;
读:
void main_fread()
{
int i = 0;
int myN;
FILE*fp = NULL;
char*fileName = "D:/3.data";
Teacher tArray[3];
fp = fopen(fileName, "wb");
if (fp == NULL)
{
printf("建立文件失败");
return;
}
for (i = 0;i < 3;i++)
{
myN = fread(&tArray[i], sizeof(Teacher), 1, fp);
}
for (i = 0;i < 3;i++)
{
printf("Name:%s,age:%d",tArray[i].name,tArray[i].age);
}
if (fp != NULL)
{
fclose(fp);
}
}
void main_fwrite()
{
int i = 0;
int myN;
FILE*fp = NULL;
char*fileName = "D:/3.data";
Teacher tArray[3];
for (i = 0;i < 3;i++)
{
sprintf(tArray[i].name,"%d%d%d",i+1,i+1,i+1);
tArray[i].age = i + 31;
}
fp = fopen(fileName,"rb");
if (fp == NULL)
{
printf("建立文件失败");
return;
}
//内存打包技术
/*_ACRTIMP size_t __cdecl //返回值 返回写的次数
fwrite(
_In_reads_bytes_(_ElementSize * _ElementCount) void const* _Buffer, //从内存块开始
_In_ size_t _ElementSize, //从这个内存块开始 写多长
_In_ size_t _ElementCount, //写多少次
_Inout_ FILE* _Stream //写入到文件指针所指向的文件中
);
*/
for (i = 0;i < 3;i++)
{
myN=fwrite(&tArray[i], sizeof(Teacher), 1, fp);
//myN 判断 有没有写满 磁盘
}
for (i = 0;i < 3;i++)
{
sprintf(tArray[i].name, "%d%d%d", i + 1, i + 1, i + 1);
tArray[i].age = i + 31;
}
if (!fp == NULL)
{
fclose(fp);
}
}