2014-11-30 6 views
-1

C 문자열에 문제가 있습니다. 배열이 char char_array[256] = {0}입니다.C char [] 및 * char

나는 char 요소로이 배열을 완성했다. 이 요소를 인쇄 할 때 printf("%c", char_array[0]);, printf("%c", char_array[1]); 등 값이 정확합니다. 그러나 printf("%s", char_array);을 인쇄하려고하면 아무 것도 인쇄되지 않습니다 ...

또한 기능이 void function(char* char_pointer)입니다. 데이터 strcpy(char_pointer, char_array)을 반환하려고합니다. 하지만 아무것도 반환하지 않습니다 ...

제발, 어떻게 함수에서 데이터를 반환하는 데 도움이, 나중에, 외부 함수, 나는 printf("%s", char_pointer_from_function)을 인쇄 할 수 있습니까?

UPDATE :

기능 :

void unmarshal_packet(char *packet) 
{ 
    char packet_size_string [10] = {0}; 
    char unmarshaled_data [2000] = {0}; 
    int counter = 0; 

    while (packet[counter] != ':' && counter < strlen(packet)) 
    { 
     packet_size_string[counter] = packet[counter]; 
     counter++; 
    } 

    counter = strlen(packet_size_string) + 1; 

    for (counter; counter < strlen(packet); counter++) 
    { 
     if ((packet[counter] != '\r') && (packet[counter] != '\n')) 
     { 
      unmarshaled_data[counter - (strlen(packet_size_string) + 1)] = packet[counter]; 
     } 
    } 

    // printf("%c", unmarshaled_data[0]); 
    // printf("%c", unmarshaled_data[1]); 
    // printf("%c", unmarshaled_data[2]); 
    // printf("%c", unmarshaled_data[3]); 
    // printf("%c", unmarshaled_data[4]); 
    // printf("%c", unmarshaled_data[5]); 
    // printf("%c", unmarshaled_data[6]); 
    // printf("%c", unmarshaled_data[7]); 
    // printf("%c", unmarshaled_data[8]); 
    // printf("%c", unmarshaled_data[9]); 

    printf("%s", unmarshaled_data); 

    unmarshaled_data[counter - (strlen(packet_size_string) + 1)] = '\0'; 

    strcpy(packet, unmarshaled_data); 
} 

함수 호출 :

strcpy(buffer, " \nWellcome to Yes/No game server! \n"); 
unmarshal_packet(buffer); 
+0

코드를 입력하십시오. –

+0

@Jacob Jones 관련 코드를 기입하십시오. –

+0

'% s '은 일련의 null이 아닌 문자 뒤에 null 문자가 오는 * 문자열 *을 출력하는 것을 의미합니다. null 문자를 발견하면 인쇄가 중단되며 인쇄 할 수없는 문자 (예 : 캐리지 리턴)에 대해서는 놀라운 결과가 나타날 수 있습니다. –

답변

1

문자열 비 NULL의 서열이다 (ASCII 값이 0) 문자와 같은 문자 뒤에가 나타내는 문자열의 끝. 예를 들어, 첫 번째 문자가 NULL 인 경우, 공백 문자 문자열을 나타내므로 아무 것도 인쇄되지 않습니다. 인쇄하기 전에 배열에 무엇을 넣었는지 알지 못해 무엇을 인쇄해야하는지 말할 수 없습니다.

+0

자세한 내용은 내 게시물을 업데이트했습니다. –