簡體   English   中英

嘗試在結構中初始化char數組,但我缺少一些東西

[英]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 Pileborgckruczek使我意識到時,我需要為dct_security分配一些內存。 因此,此更改解決了問題:

platform_dct_security_t* dct_security;
dct_security = malloc(sizeof(platform_dct_security_t));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM