У меня проблемы с сохранением массива 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:
/ :
Так что, как вы можете видеть, это только правильноиногда.
Я уверен, что моя ошибка в присвоении структуры.К сожалению, я не могу предложить лучший взгляд на код из-за его проприетарного программного обеспечения.