将一个结构体数组的值 赋值给另一个结构体数组代码
时间: 2024-08-14 17:04:35 浏览: 101
在C语言中,如果你有两个结构体数组,并想将一个数组的值赋给另一个,你可以通过逐个元素复制的方式来完成。假设你有以下两个结构体:
```c
typedef struct {
int value;
char name[20];
} MyStruct;
MyStruct array1[] = { {1, "Element1"}, {2, "Element2"}, {3, "Element3"} };
MyStruct array2;
```
你可以这样做来将`array1`的值复制到`array2`:
```c
for (int i = 0; i < sizeof(array1) / sizeof(array1[0]); i++) {
array2[i].value = array1[i].value;
strcpy(array2[i].name, array1[i].name);
}
```
这里使用了`strcpy`函数来复制字符串部分,因为直接赋值只能用于基本数据类型。
相关问题
用c语言指针实现一个结构体数组对另一个结构体数组的赋值
以下是用C语言指针实现一个结构体数组对另一个结构体数组的赋值的示例代码:
```c
#include <stdio.h>
#include <string.h>
struct student {
int num;
char name[10];
char sex;
double height;};
int main() {
struct student stus1[3] = {{1001, "Tom", 'M', 1.75}, {1002, "Jerry", 'F', 1.65}, {1003, "Mike", 'M', 1.80}};
struct student stus2[3];
struct student *p1, *p2;
p1 = stus1;
p2 = stus2;
memcpy(p2, p1, sizeof(stus1));
for (int i = 0; i < 3; i++) {
printf("stus2[%d]: num=%d, name=%s, sex=%c, height=%.2f\n", i, (p2+i)->num, (p2+i)->name, (p2+i)->sex, (p2+i)->height);
}
return 0;
}
```
解释如下:
1. 定义了一个结构体`student`,包含学号、姓名、性别和身高四个成员变量。
2. 定义了两个结构体数组`stus1`和`stus2`,分别用于存储学生信息。
3. 定义了两个指向结构体的指针`p1`和`p2`,并将`p1`指向`stus1`数组的首元素,将`p2`指向`stus2`数组的首元素。
4. 使用`memcpy`函数将`stus1`数组中的数据复制到`stus2`数组中。
5. 使用指针遍历`stus2`数组,并输出每个学生的信息。
如何给结构体数组赋值(赋上的是另一个结构体数组)
给结构体数组赋值可以使用循环遍历的方式,将一个结构体数组中的每个元素赋值给另一个结构体数组的对应元素。假设有两个结构体类型 `struct A` 和 `struct B`,分别定义了结构体数组 `arr1` 和 `arr2`,代码示例如下:
```c
#include <stdio.h>
struct A {
int a;
char b;
};
struct B {
int x;
char y;
};
int main() {
// 定义结构体数组 arr1 和 arr2
struct A arr1[2] = {{1, 'A'}, {2, 'B'}};
struct B arr2[2];
// 将 arr1 中的元素赋值给 arr2
for (int i = 0; i < 2; i++) {
arr2[i].x = arr1[i].a;
arr2[i].y = arr1[i].b;
}
// 输出 arr2 中的元素
for (int i = 0; i < 2; i++) {
printf("arr2[%d]: x=%d, y=%c\n", i, arr2[i].x, arr2[i].y);
}
return 0;
}
```
在上面的示例代码中,结构体类型 `struct A` 包含了两个成员变量 `a` 和 `b`,结构体类型 `struct B` 包含了两个成员变量 `x` 和 `y`,并且分别定义了结构体数组 `arr1` 和 `arr2`。在主函数中,首先给 `arr1` 赋值,然后使用循环遍历的方式将 `arr1` 中的元素赋值给 `arr2`,最后输出 `arr2` 中的元素。
阅读全文