[英]Trying to initialize a char array in a struct but I'm missing something
我有一個這樣的結構:
typedef struct
{
char private_key[ PRIVATE_KEY_SIZE ];
char certificate[ CERTIFICATE_SIZE ];
uint8_t cooee_key [ COOEE_KEY_SIZE ];
} platform_dct_security_t;
在我的主要函數中,我聲明了變量:
platform_dct_security_t* dct_security = NULL;
現在,我需要在此結構中填充數組。
我也有這樣定義我的證書:
#define CERTIFICATE_STRING \
"-----BEGIN CERTIFICATE-----\r\n"\
"MIIFIzCCBAugAwIBAgIETB0zITANBgkqhkiG9w0BAQUFADCBsTELMAkGA1UE\r\n"\
...
...
"uhZ2VrLWSJLyi6Y+t6xcaeoLP2ZFuQ==\r\n"\
"-----END CERTIFICATE-----\r\n"\
"\0"\
"\0"
所以我繼續:
memcpy( dct_security->certificate, CERTIFICATE_STRING, CERTIFICATE_SIZE );
printf( "\n%s\n", dct_security->certificate );
但是,這會打印出一些垃圾。 我也嘗試過此方法,但它也不起作用:
(*dct_security) = { CERTIFICATE_STRING, PRIVATE_KEY_STRING, COOEE_KEY_STRING };
當我使用它進行編譯和運行時,它不會崩潰,但是會卡住並且什么都不會打印出來。
如果我在沒有struct
情況下定義另一個char
數組,則它的作用就像一個超級魅力:
char xyz[ CERTIFICATE_SIZE ];
memcpy( xyz, CERTIFICATE_STRING, CERTIFICATE_SIZE );
printf("\n%s\n", xyz);
我要去哪里錯了? 我該如何解決?
當Joachim Pileborg和ckruczek使我意識到時,我需要為dct_security
分配一些內存。 因此,此更改解決了問題:
platform_dct_security_t* dct_security;
dct_security = malloc(sizeof(platform_dct_security_t));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.