c语言序列化和反序列化 代码实例
时间: 2023-10-30 17:03:03 浏览: 60
C语言序列化和反序列化是对数据进行存储和读取的过程,将数据转化成特定格式的字节流或字符串,以便于存储、传输和恢复数据。
序列化可以将数据结构或对象转化为字节流。在C语言中,可以使用结构体来表示复杂的数据结构,例如:
```c
typedef struct {
int id;
char name[20];
float score;
} Student;
```
假设有一个Student结构体数组,我们可以将其进行序列化,将数据按照一定格式转化为字节流:
```c
Student students[3];
// 省略对students的初始化...
FILE* file = fopen("data.txt", "wb");
fwrite(students, sizeof(Student), 3, file);
fclose(file);
```
上述代码中,使用`fwrite`函数将students数组的数据写入到名为data.txt的文件中,通过指定`sizeof(Student)`和3表示写入3个Student结构体的数据。
反序列化则是将存储的字节流或字符串转化为原来的数据格式。使用C语言的话,可以通过读取字节流并重新解析为原来的结构体数组:
```c
Student students[3];
FILE* file = fopen("data.txt", "rb");
fread(students, sizeof(Student), 3, file);
fclose(file);
```
上述代码中,使用`fread`函数将data.txt文件中的数据读取到students数组中。
需要注意的是,序列化和反序列化的格式需要约定好,以保证数据的正确还原。另外,在实际应用中,还可以考虑数据压缩、加密等问题,以增加数据的安全性和效率。