写个c语言序列化反序列化例子
时间: 2024-10-08 17:26:31 浏览: 104
在C语言中,序列化和反序列化通常用于将数据结构转换为字节流以便存储或在网络通信中传输,然后在需要时将其还原为原始形式。这里是一个简单的例子,我们将使用结构体和`fwrite`、`fread`函数来进行二进制文件的序列化和反序列化。
首先,我们定义一个结构体:
```c
#include <stdio.h>
// 定义一个结构体
typedef struct {
int id;
char name[50];
} User;
void serialize(User *user, FILE *file) {
// 序列化过程
fwrite(&user->id, sizeof(int), 1, file);
fwrite(user->name, sizeof(char)*50, 1, file);
}
User deserialize(FILE *file) {
User user;
// 反序列化过程
fread(&user.id, sizeof(int), 1, file);
fread(user.name, sizeof(char)*50, 1, file);
return user;
}
```
序列化操作(保存到文件):
```c
int main() {
User my_user = {42, "Alice"};
FILE *file = fopen("users.bin", "wb");
if (file == NULL) {
printf("Failed to open file.\n");
return 1;
}
serialize(&my_user, file);
fclose(file);
return 0;
}
```
反序列化操作(从文件恢复数据):
```c
int main() {
FILE *file = fopen("users.bin", "rb");
if (file == NULL) {
printf("Failed to open file.\n");
return 1;
}
User recovered_user = deserialize(file);
printf("Recovered user: ID=%d, Name='%s'\n", recovered_user.id, recovered_user.name);
fclose(file);
return 0;
}
```
在这个例子中,`serialize`函数将用户结构体的数据写入文件,而`deserialize`函数从文件读取数据并创建一个新的结构体实例。
阅读全文
相关推荐




















