에 문자 배열을 참조하는 나는 키에 널 종료 문자에 대한 여분의 바이트와 8 바이트 키가 있습니다.C 언어 : 중첩 된 구조체
struct KEY { char k[9]; };
키가 4 개 있습니다.
struct KEYS { struct KEY uk[4]; };
나는 akeys 이들과 포인터를 선언
struct KEY akey;
struct KEYS akeys;
struct KEYS * pkeys = &akeys;
내가 포인터 pkeys를 사용하여 akeys에있는 모든 키를 제로화합니다. 내가 시도 다음 : 내가 키 메모리의 블록을 malloc을 계획,하지만이 간단한 예제가 동작하지 않습니다
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 구조체에 대한 단일 포인터를 사용하여 키를 검색하고 싶습니다.
char k [9]; 문자열에 9 바이트가 이미 할당되었습니다. 당신의 char * k를 선언 한 경우 [9] ;, 당신은, 포인터의 _array_이 문자열을 가리키는, 그리고 당신이 원하는 9 바이트 문자열의 많은 배열에 대한 포인터를 할당해야합니다. – ryyker