변수를 사용하여 구조체를 초기화하는 방법은 무엇입니까?변수에 배열이있는 구조체 초기화
MyStruct test = {"hello", 2009};
을하지만이 버전은 도청되고 :
이 버전은 잘 작동
char str[] = "hello";
MyStruct test = {str, 2009};
변수를 사용하여 구조체를 초기화하는 방법은 무엇입니까?변수에 배열이있는 구조체 초기화
MyStruct test = {"hello", 2009};
을하지만이 버전은 도청되고 :
이 버전은 잘 작동
char str[] = "hello";
MyStruct test = {str, 2009};
당신은 C에서 배열을 할당 할 수 없습니다, 그래서 불행하게도 직접 그렇게 할 수있는 방법이 없습니다. 하지만 strcpy를 사용하여 데이터를 복사 할 수는 있습니다.
typedef struct {
char name[20];
int year;
} MyStruct;
int main() {
MyStruct a = { "hello", 2009 }; // works
char s[] = "hello";
MyStruct b = { "", 2009 }; // use dummy value
strcpy(b.name, s);
return 0;
}
MyStruct
의 정의 입력 char const *
의 제 부재를 포함한다.
MyStruct의 정의에 char 포인터 (또는 더 나은 'const char *')가 포함 된 경우에는 두 번째 이니셜 라이저가 올바르게 작동합니다. –
'typedef struct MyStruct {...} MyStruct;'의 정의를 게시하면 도움이됩니다. –