我有这样的结构:
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);
我哪里错了?我该如何解决这个问题?
答案 0 :(得分:0)
当Joachim Pileborg和ckruczek让我意识到,我需要为dct_security
分配一些内存。所以这个改变解决了这个问题:
platform_dct_security_t* dct_security;
dct_security = malloc(sizeof(platform_dct_security_t));