试图在结构中初始化一个char数组,但我遗漏了一些东西

时间:2016-08-11 12:33:53

标签: c

我有这样的结构:

typedef struct
{
    char    private_key[ PRIVATE_KEY_SIZE ];
    char    certificate[ CERTIFICATE_SIZE ];
    uint8_t cooee_key  [ COOEE_KEY_SIZE ];
} platform_dct_security_t;

在我的main函数中,我声明了我的变量:

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 };

当我编译并运行时,它不会崩溃,但它会卡住而且没有打印出来。

如果我在没有char的情况下定义另一个struct数组,它就像一个魅力:

char xyz[ CERTIFICATE_SIZE ];
memcpy( xyz, CERTIFICATE_STRING, CERTIFICATE_SIZE );
printf("\n%s\n", xyz);

我哪里错了?我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

Joachim Pileborgckruczek让我意识到,我需要为dct_security分配一些内存。所以这个改变解决了这个问题:

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