一根绳子及其回文



此函数的目的是创建一个带有其回文的字符串连接。例如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;
}

代码无法分配和附加空字符

最好使用 size_t 进行数组索引和大小调整。

检查分配失败

char *mirror(const char *str) {
    size_t length = strlen(str);
    char *result = malloc(2*length + 1);  // + 1 for 
    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] = '';
    }
    return result;
}

相关内容

  • 没有找到相关文章

最新更新