2017-03-17 6 views
0

이 함수의 목적은 회문 문자열을 갖는 문자열 연결을 만드는 것입니다. 예 : abc -> abccba문자열과 그 회문 문자

여기 내 코드이므로 아무런 변경없이 결과가 여전히 원래 문자열로 표시됩니다. 나는 문자열과 회문의 일부 공간을 예약했지만 여전히 작동하지 않습니다.

char *mirror(const char *str) { 
    char *result = malloc(2 * strlen(str) * sizeof(char)); 
    int str_len = strlen(str); 
    for (int i = 0; i < str_len; ++i) { 
     result[i] = str[i]; 
    } 
    for (int j = str_len; j < 2*str_len; ++j) { 
     result[j] = str[2*str_len-j]; 
    } 
    return result; 
} 

답변

0

코드에 할당하고 null 문자를 추가하는 데 실패합니다.

배열 인덱싱 및 사이징에 size_t을 사용하는 것이 더 좋습니다. 실패한 할당

확인

char *mirror(const char *str) { 
    size_t length = strlen(str); 
    char *result = malloc(2*length + 1); // + 1 for \0 
    if (result) { 

     size_t r; 
     for (r = 0; r < length; ++r) { 
     result[r] = str[r]; 
     } 

     size_t j = length; 
     for (; r < length*2; ++r) { 
     result[r] = str[--j]; 
     } 

     result[r] = '\0'; 
    } 
    return result; 
}