【发布时间】:2012-01-01 06:11:39
【问题描述】:
我在将 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:
/ :
所以你可以看到它只是有时是正确的。
我确定我的错误在于结构分配。不幸的是,由于它是专有软件,我无法更好地查看代码。
【问题讨论】:
-
你能在调试器中单步调试相关部分,看看哪里出了问题吗?
-
希望大家多关注代码而不是这里显示的语法和拼写。
-
我无法单步调试调试器,因为我只能在没有安装 gdb 的情况下运行一个特定的 linux 机器。xpbu_transaction_type 和 xpbu_update_type 是全局的。它们取自专有 api。
标签: c arrays struct char constants