KEY に NULL 終了文字用の余分なバイトを含む 8 バイトのキーがあります。
struct KEY { char k[9]; };
KEYSにはこれらのキーが4つあります。
struct KEYS { struct KEY uk[4]; };
これらと akeys へのポインターを宣言します。
struct KEY akey;
struct KEYS akeys;
struct KEYS * pkeys = &akeys;
ポインター pkeys を使用して、akeys 内のすべてのキーをゼロに設定したいと考えています。私は次のことを試しました:
struct KEY zerokey;
strcpy(zerokey.k, "00000000");
for (i = 0; i < 4; i++) {
pkeys->uk[i] = zerokey;
printf("key=%s", pkeys->uk[i]); //error: crashes program
}
KEYS 用にメモリ ブロックを malloc する予定ですが、この単純な例を機能させることができません。
なぜこれが失敗するのですか?これを行うより良い方法はありますか?私の構造体はこれを行うための最良の方法ですか? キーを追加し、キーを検索し、KEYS 構造体への単一のポインターを使用してキーをゼロに設定したいと考えています。