c语言只结构体如何交换数据
时间: 2024-09-21 09:07:31 浏览: 46
php读取二进制流(C语言结构体struct数据文件)的深入解析
在C语言中,如果想要交换两个结构体的数据,可以直接通过指针操作结构体成员的方式来完成。假设我们有一个名为`Person`的结构体,包含`name`和`age`两个成员,可以这样做:
```c
struct Person {
char name[50];
int age;
};
void swapPerson(struct Person* p1, struct Person* p2) {
// 使用临时变量存储其中一个结构体的数据
char tempName[50];
int tempAge;
// 交换成员
tempNamestrcpy(p1->name, p2->name); // 注意strcpy, 不是 memcpy
tempAge = p1->age;
p1->age = p2->age;
p2->age = tempAge;
tempNamestrcpy(p2->name, tempName); // 再次交换以确保p2的名字也被更新
}
// 示例:
struct Person personA = {"Alice", 25};
struct Person personB = {"Bob", 30};
swapPerson(&personA, &personB); // 现在personA的年龄变为30,personB的名字变为"Alice"
```
在这个例子中,`swapPerson`函数接受两个`Person`类型的指针作为参数,通过复制和赋值的方式实现了两结构体成员的交换。需要注意的是,在复制字符串时通常使用`strcpy`而非直接拷贝字节,因为`strcpy`会自动处理字符串结束符`\0`。
阅读全文