#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct Student{
char name[21];
int age;
int score;
char site[51];
}stu;
void test() {
stu s[] = {
{"张三",19,732,"广东省"},
{ "李四",20,722,"河南省" },
{ "王五",20,703,"河北省" },
};
FILE*fp = fopen("F:/c/文件的操作/二进制写.txt","w");
if (!fp)
{
return;
}
for (int i = 0; i < 3; i++)
{
fwrite(&s[i], 1, sizeof(stu), fp);//以数据块的方式(二进制)给文件写入内容
}
fclose(fp);
}
void test2() {
FILE*fp = fopen("F:/c/文件的操作/二进制写.txt","r");
if (!fp)
{
return;
}
stu*p = (stu*)malloc(sizeof(stu) * 3);
int i = 0;
while (!feof(fp))
{
fread(&p[i], 1, sizeof(stu), fp);//以数据块的方式(二进制)从文件中读取内容
i++;
}
for (int j = 0; j < 3; j++)
{
printf("姓名:%s\n", p[j].name);
printf("年龄:%d\n", p[j].age);
printf("分数:%d\n", p[j].score);
printf("地址:%s\n", p[j].site);
}
free(p);
fclose(fp);
}
int main() {
test();//二进制写入
test2();//二进制读取
return 0;
}
如图:

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
typedef struct Student{
char name[21];
int age;
int score;
char site[51];
}stu;
void test() {
stu s[] = {
{"张三",19,732,"广东省"},
{ "李四",20,722,"河南省" },
{ "王五",20,703,"河北省" },
};
FILE*fp = fopen("F:/c/文件的操作/二进制写.txt","w");
if (!fp)
{
return;
}
for (int i = 0; i < 3; i++)
{
fwrite(&s[i], 1, sizeof(stu), fp);//以数据块的方式(二进制)给文件写入内容
}
fclose(fp);
}
void test2() {
FILE*fp = fopen("F:/c/文件的操作/二进制写.txt","r");
if (!fp)
{
return;
}
stu*p = (stu*)malloc(sizeof(stu) * 3);
int i = 0;
while (!feof(fp))
{
fread(&p[i], 1, sizeof(stu), fp);//以数据块的方式(二进制)从文件中读取内容
i++;
}
for (int j = 0; j < 3; j++)
{
printf("姓名:%s\n", p[j].name);
printf("年龄:%d\n", p[j].age);
printf("分数:%d\n", p[j].score);
printf("地址:%s\n", p[j].site);
}
free(p);
fclose(fp);
}
int main() {
test();//二进制写入
test2();//二进制读取
return 0;
}
如图:
