2014-02-25 4 views
0

int8 배열은 본질적으로 프로그램 상단에 BYTE 배열로 선언되어 있습니다.byte/int8 배열 요소를 char 배열로 복사

처리를 위해이 배열의 내용을 char 배열로 복사하려고합니다.

byte_array[0] = "A"; 
byte_array[1] = "Q"; 
byte_array[2] = "W"; 
byte_array[3] = "E"; 
byte_array[4] = "R"; 
byte_array[5] = "T"; 
byte_array[6] = "Y"; 
byte_array[0] = "Z"; 
byte_array[1] = "."; 
byte_array[2] = "."; 
byte_array[3] = "."; 

을 그리고 내 코드는 다음과 같다 :

char char_array[]; 

for (j = 0; j < byte_array_size; j++) { 
    char_array = &byte_array[j]; 

    printf("char_array[j]: %c - j: %u\n\r", char_array[j], j); 
      } 

주 : J와 byte_array_size이 내 프로그램의 상단에 선언하고 0으로 intialised되어 다음과 같이 내 바이트 배열의 내용은 10이다. byte_array는 게시물의 시작 부분에 언급 된대로 채워집니다. 여기

char_array[0] = "A"; 
char_array[1] = "Q"; 
char_array[2] = "W"; 
char_array[3] = "E"; 
char_array[4] = "R"; 
char_array[5] = "T"; 
char_array[6] = "Y"; 
char_array[0] = "Z"; 
char_array[1] = "."; 
char_array[2] = "."; 
char_array[3] = "."; 
+2

char 리터럴은 "A"대신에 "A"여야한다. 같게. – BLUEPIXY

+0

문자를 올바르게 초기화했는지 확인하거나 포인터의 ls 바이트를 임의의 문자열에 저장하면됩니다. – Simson

답변

3

그것이 :

char char_array[char_array_size]; 

for (j = 0; j < byte_array_size && j < char_array_size; j++) { 
    char_array[j] = byte_array[j]; 
} 
0

char_array = &byte_array[j]; 당신이 주소를 복사, 유 char_array[j] = byte_array[j];을해야 값을 복사

위의 printf는 본질적보다는 가짜 문자를 인쇄한다

char_array도 할당해야합니다. 너는 그것의 크기 사용을 모른다. malloc 만약 사용법을 알고 있다면 char char_array[YOUR_SIZE];