2017-03-17 42 views
0

這個函數的目的是用它的迴文創建一個字符串concat。例如 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

代碼未能分配並追加空字符

更好地使用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; 
} 
相關問題