gpt4 book ai didi

c - 如何正确地将 const char 数组分配给结构?

转载 作者:行者123 更新时间:2023-11-30 14:27:07 24 4
gpt4 key购买 nike

我在将 const char 数组存储到结构中时遇到问题,然后从结构调用值时,我并不总是获得预期值。

下面是代码:

typedef struct
{
char *update_type;
char *transaction;
} TickType;

在我的线程中:

const char tx_types[] = "INV/ADD/MOD/DEL/RPL";
const char upd_types[] = "INS/OVR/MOV/DEL";

tick->transaction = &tx_types[4*upd.xpbu_transaction_type];
tick->update_type = &upd_types[4*upd.xpbu_update_type];

upd.xpbu_transaction_type和此upd.xpbu_update_type分别返回整数(0-4)和(0-3)。在另一个线程中,我们打印到文件:

fprintf(out, "%3.3s/%3.3s:\n",tick->transaction, tick->update_type);
fflush(out);

问题是在检查输出文件时我看到以下内容:

+MOD/DEL:
+ / Â +:
+MOD/DEL:
+MOD/ :
/@Ea:
/<90>Ea:
/Ã Ea:
/0Fa:
/ :

正如您所见,它只是有时是正确的。

我确信我的错误在于结构赋值。不幸的是,由于代码是专有软件,我无法更好地了解它。

最佳答案

我怀疑问题出在你放置数组定义的位置。

您应该将它们放在全局地址空间中或将它们声明为静态,以便能够在任务之间共享字符串的地址。

或者按照 BlackBear 建议分配内存并将子字符串复制到其中。

关于c - 如何正确地将 const char 数组分配给结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8183116/

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