2012-07-27 4 views
1

저는 프로그래머 초보자입니다. 왜 배열에서 다른 스크립트를 복사 할 수 없는지 이해할 수 없습니다.배열을 사용하는 Win32 API

char array1[11]; 
char array2[2]; 
array1 = {'255 105 85'}; 
array2[0] = array1[0]; 
array2[1] = array1[1]; 
array2[2] = array1[2]; 

MessageBox(hwnd,array2,"mes",NULL); 

"255"대신 "5"가 표시됩니다. GCC 컴파일러와 함께 code :: blocks을 사용합니다.이 프로젝트는 win32 프레임 기반으로 만들었습니다. 누군가가 문제의 원인을 알고 있습니까?

답변

1

다음 구조는 C에서 허용되지 않습니다 : 이것은 3 개 지정된 값으로 배열 1을 채우고 떠나

char array1[11] = {255, 105, 85}; 

:

array1 = {'255 105 85'}; 

대신이 같은 정적 배열 초기화를 사용하는 것이 좋습니다 다른 모든 요소는 0으로 설정됩니다 (즉, 인덱스 3으로 시작하고 인덱스 10으로 끝나는 요소).

컴파일러가 귀하의 경우 구문 오류를 발행하지 않은 이유는, 오히려 놀라운

업데이트 : 또한이 배열 1과 같은 식을 때 개별 문자로 조작되어 있습니다 [2 ]. 당신이 문자열을 조작하려는 경우 (즉, 사용자가 지정한 숫자 3 별도의 문자열을 가지고),이 같은 것을 선언해야합니다 :

char *array1[3] = { 
     "255", 
     "105", 
     "85" 
    }; 

    char *array2[3]; 

    array2[0] = array1[0]; 
    array2[1] = array1[1]; 
    array2[2] = array1[2]; 

은 따라서 당신이 문자열 배열을해야합니다. array1의 각 항목에는 문자열 "255"가있는 메모리의 포인터 (주소)가 포함됩니다 ("255"는 '2', '5', '5', '\ 0 ').

0

하는 array1은 다음과 같이 선언한다 :

char array1[] = {0x255, 0x105, 0x85};

작은 따옴표는 'a' 또는 '6' 또는 '!' 같은 아스키 단일 문자,위한 것입니다.

또한 array2의 길이는 2이지만 세 번째 값 (array2[2])에 값을 할당하고 있습니다. 이것은 아마도 오류 일 것입니다.