char* 转结构体
时间: 2023-07-23 13:08:11 浏览: 149
C#中byte数组和c++结构体的转换
在 C 语言中,char* 类型可以被看作是一个字符数组的首地址。如果想要将 char* 类型转换为结构体类型,需要先将 char* 类型的数据解析为结构体类型的数据。
假设有一个结构体类型为:
```c
struct Person {
char name[20];
int age;
char gender;
};
```
现在有一个 char* 类型的数据,表示一个 Person 结构体类型的数据,可以通过以下方法将其转换为 Person 结构体类型:
```c
char* data = "Tommy,25,M";
struct Person p;
sscanf(data, "%[^,],%d,%c", p.name, &p.age, &p.gender);
```
上述代码中,首先定义了一个 char* 类型的数据 `data`,代表一个 Person 结构体类型的数据。然后定义了一个 Person 结构体类型的变量 `p`,并使用 sscanf 函数解析 `data` 数据,将其赋值给 `p` 变量。其中 `%[^,]` 表示读取除逗号以外的任意字符,`%d` 表示读取一个整数,`%c` 表示读取一个字符。通过这样的方式,就可以将 char* 类型的数据转换为结构体类型的数据。
阅读全文