gpt4 book ai didi

使用 C 中的函数复制结构数组

转载 作者:太空宇宙 更新时间:2023-11-04 00:10:48 25 4
gpt4 key购买 nike

我有一个名为 Record 的结构,它具有与之关联的数据,在我的程序中,我有一个包含这些 Record 的数组。结构如下所示:

#define MAX_RECORDS 1024

typedef struct
{
char title[80];
char artist[80];
int year;
char genre[80];
char label[80];
double price;
} Record;

Record record_inventory[MAX_RECORDS];

由于我正在编写的程序需要将 record_inventory 的不同字段排序到新的 Record 数组中,但实际上并没有更改与原始数组关联的数据,所以我我想我需要一种简单的方法来将一个数组复制到另一个数组。

我在网上查了一下,在stackoverflow上找到了一篇帖子,说是这样布局的:

void copy_record(Record (*copy_to)[MAX_RECORDS], Record (*copy_from)[MAX_RECORDS])
{
memcpy(copy_from, copy_to, sizeof *copy_from);
}

现在,在排序方法中,我有一个这样的函数原型(prototype):

Record* sort_by_title()
{
Record ret[MAX_RECORDS];
copy_record(&ret, record_inventory); // compilation error saying incorrect pointer type
// do sorting here
return ret;
}

上面的评论给我一个不正确的指针类型错误。但是执行以下所有操作也不起作用:

copy_record(&ret, &record_inventory);
copy_record(&ret, *record_inventory);
copy_record(ret, record_inventory);
copy_record(ret, &record_inventory);
copy_record(*ret, *record_inventory);

那么我应该如何将一个结构数组复制到另一个数组,并返回它呢?我什至返回了正确的类型(我想要的类型)吗?我想我只是对我实际需要传递的内容感到困惑,所以现在我只是想让一些东西起作用。

最佳答案

出于某种原因,您的函数声明指出它采用指向指针的指针。应该是:

void copy_record(Record *copy_to, Record *copy_from)
{
memcpy(copy_to, copy_from, sizeof(*copy_from) * MAX_RECORDS);
}

然后调用它就像copy_record(ret, record_inventory);

关于使用 C 中的函数复制结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31739430/

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