구조체에 저장되는 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 반환의 int (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