【发布时间】:2013-09-19 15:32:00
【问题描述】:
首先,如果已经提出并解决了这个问题,我真的很抱歉 - 我花了很长时间搜索并尝试修改代码示例来满足我的需求......但遗憾的是无济于事。本质上,我只是想将一个结构的内容复制到另一个结构(此处记录在其他地方,但我无法让它工作)。
扫描仪在读取条形码时会填充以下结构:
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 元素副本确实得到正确的值。
谢谢!
【问题讨论】:
-
可能不相关,但如果您的示例中的
code是指向结构的指针,那么您的sizeof是错误的。应该是sizeof(*code)或sizeof(struct barcode)。 -
@zubergu 不是一个好主意 - 他有一个 char 指针作为成员。
-
暂时忽略复制问题,原始“文本”是否包含正确的数据?它是没有嵌入空值的实际文本数据吗?您是否应该为文本字段和文本中的 memcpy() 分配“长度”字节?
-
如何操作
code变量?根据您在问题中给出的声明,其中没有任何初始化... -
@SeanBright 辉煌,谢谢!我只是错过了 sizeof(*code) 中的星号。现在一切正常!一直以来,我都是成功的一个角色!非常感谢你的帮助! :-)