我遇到了将const char数组存储到结构的问题,然后当从一个结构体调用该值时,我并不总是得到期望的值。如何正确地分配一个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:
/ :
因此,大家可以看到这是天经地义的时候。
我确定我的错误是在结构体赋值中。不幸的是,由于它是专有软件,我无法提供更好的代码。
能否通过相关部分的调试步骤,看看哪里出了问题? –
我希望你比这里的语法和拼写显示的代码更好地关注代码。 – Indy9000
我无法在调试器上单步执行,因为我只能在没有安装gdb的情况下运行一个特定的linux框。xpbu_transaction_type和xpbu_update_type是全局的。他们从专有API中获取。 – Nathan