一根绳子和它的回文

时间:2017-03-17 09:00:38

标签: memory malloc heap palindrome

这个函数的目的是用它的回文创建一个字符串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;
}

1 个答案:

答案 0 :(得分: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;
}