C语言以二进制形式读入结构体
时间: 2023-09-06 09:13:38 浏览: 63
在C语言中,可以使用二进制文件读写来读取和写入结构体。以下是一个示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
struct person {
char name[20];
int age;
};
int main() {
struct person p;
FILE *fp;
fp = fopen("file.bin", "rb");
if (fp == NULL) {
printf("Error opening file\n");
exit(1);
}
fread(&p, sizeof(struct person), 1, fp);
printf("Name: %s\n", p.name);
printf("Age: %d\n", p.age);
fclose(fp);
return 0;
}
```
在上面的代码中,我们定义了一个结构体 `person`,其中包含一个字符串类型的 `name` 和一个整数类型的 `age`。然后我们打开一个二进制文件 `file.bin`,并使用 `fread` 函数将文件中的数据读入到结构体 `p` 中。最后输出读取的结果。需要注意的是,`fread` 函数的第一个参数是要读取数据的存储位置,第二个参数是要读取的数据块的大小,第三个参数是要读取的数据块的数量,第四个参数是文件指针。
如果想要将结构体写入二进制文件,可以使用类似的代码:
```c
#include <stdio.h>
#include <stdlib.h>
struct person {
char name[20];
int age;
};
int main() {
struct person p = {"Tom", 25};
FILE *fp;
fp = fopen("file.bin", "wb");
if (fp == NULL) {
printf("Error opening file\n");
exit(1);
}
fwrite(&p, sizeof(struct person), 1, fp);
fclose(fp);
return 0;
}
```
在上面的代码中,我们定义了一个结构体 `person`,并初始化了其中的数据。然后我们打开一个二进制文件 `file.bin`,并使用 `fwrite` 函数将结构体写入文件中。最后关闭文件。需要注意的是,`fwrite` 函数的第一个参数是要写入数据的存储位置,第二个参数是要写入的数据块的大小,第三个参数是要写入的数据块的数量,第四个参数是文件指针。