gpt4 book ai didi

c - 部分复制 C 中的结构体

转载 作者:行者123 更新时间:2023-11-30 15:41:55 24 4
gpt4 key购买 nike

嘿,我对 c 确实很陌生,我已经坐在这里很长一段时间了,现在正在尝试学习有关使用结构的最基本的知识。

我现在正在尝试将结构的一部分复制到另一个结构中,以便我可以根据需要重新排列它们。这就是我到目前为止所想出的,我已经多次更改代码试图让它工作,所以如果您能解释我应该如何更改代码以及原因,我将非常感激。

到目前为止我想到的是:

struct fruits {
char name[20]
int in_stock;
}

struct fruits temp, stock[] = {
{"Apples", 10}
{"Pears", 15}
{"Bananas", 12}
}

根据我迄今为止的理解(我很可能是错的),我创建了两个具有相同内容的结构?

我现在想做的只是交换第一个和第三个元素的位置(10 个苹果和 12 个香蕉)

这就是我陷入困境的地方。我尝试过多种方法

temp[1] = stock[1];
stock[1] = stock[3];
stock[j + 1] = temp[j];

或者使用memcpy

memcpy(&temp[1], &stock[1], sizeof(fruits));
memcpy(&stock[1], &stock[3], sizeof(fruits));
memcpy(&stock[3], &temp[1], sizeof(fruits));

还尝试移动单个元素

memcpy(&temp[1].name, &stock[1].name, sizeof(fruits));
memcpy(&temp[1].in_stock, &stock[1].in_stock, sizeof(fruits));
.
.
.

最佳答案

C 中的数组从 0 开始索引,因此数组的第一个元素是元素 0,第三个元素是元素 2。此外,temp 不是数组,所以不要在 temp 中使用方括号表示法:

temp = stock[0];
stock[0] = stock[2];
stock[2] = temp;

关于c - 部分复制 C 中的结构体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20391626/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com