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

标签 c arrays struct char constants

我在将 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/

相关文章:

c - 使用指针访问 u16 类型

c - 如何在 linux 中伪造 ipv6 流量?

c - 警告 : implicit declaration of function — why does my code work anyway?

c - 使用 while 循环打印每行 10 个字符的 Ascii 表

arrays - 快速性能 : map() and reduce() vs for loops

c 指向结构体的指针问题

arrays - C++11 段错误试图动态地将数组(<algorithm>)复制到向量中

c - 返回值3221225725,可能缓冲区溢出?

c++ - 从空类继承时如何解释这个sizeof结果

c++对结构使用排序的问题