が欠けている:私の主な機能にはは、構造体のchar型の配列を初期化しようとしているが、私はこのような構造体持っている何か
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);
?これをどうやって解決するのですか?
ポインタ変数 'dct_security'を実際にどこか有効にするようにしますか?あなたは[最小限の、完全で、証明可能な例](http://stackoverflow.com/help/mcve)を作成して私たちを見せてください。 –
@JoachimPileborgの意味は:(例えば 'malloc'を使って)ポインタのためにメモリを割り当てていたのでしょうか、それともどこかで初期化しましたか? – ckruczek
'dct_security'は' platform_dct_security_t'型の変数ではありません! [mcve] – Olaf