gpt4 book ai didi

使用 char 指针复制 C 结构

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

首先,如果这个问题已经被询问并得到解决,我真的很抱歉——我花了很长时间搜索并尝试调整代码示例来满足我的需要……但遗憾的是无济于事。本质上,我只是想将一个结构的内容复制到另一个结构(在其他地方有记录,但我无法让它工作)。

扫描仪在读取条形码时填充以下结构:

struct barcode
{
char *text;
int length;
int id;
int min;
int max;
};

这被实例化为:

static struct barcode code = {0};

我实例化了另一个相同类型的实例:

struct barcode *barcodeHolder;

这是为了存储扫描条形码的副本。这是因为随后将扫描指示其他步骤的其他代码,例如指示数字或阶段(例如结束、开始等)的条形码。一旦我想将结构内容写入磁盘,我就使用结构的“副本”,因为这就是我想要的。

但是,char *text 属性始终等于“c”而不是条形码的值。

我将它们复制如下:

barcodeHolder = malloc(sizeof(code));
barcodeHolder->text = malloc(strlen(code->text) + 1);
strcpy(barcodeHolder->text, code->text);
barcodeHolder->id = code->id;
barcodeHolder->length = code->length;
barcodeHolder->max = code->max;
barcodeHolder->min = code->min;

这是我从其他类似主题的帖子中得到的。

但是,我显然做了一些愚蠢的错误,欢迎任何人提供任何帮助,以便我的 struct text 元素副本确实复制了正确的值。

谢谢!

最佳答案

您的代码不是指针

你需要这个:

barcodeHolder = malloc(sizeof(code));
barcodeHolder->text = malloc(strlen(code.text) + 1);
strcpy(barcodeHolder->text, code.text);
barcodeHolder->id = code.id;
barcodeHolder->length = code.length;
barcodeHolder->max = code.max;
barcodeHolder->min = code.min;

关于使用 char 指针复制 C 结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18898969/

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