【问题标题】:A string and its palindrome字符串及其回文
【发布时间】:2017-03-17 09:00:37
【问题描述】:

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

【问题讨论】:

    标签: memory malloc palindrome


    【解决方案1】:

    代码未能分配和追加一个空字符

    最好使用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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-23
      • 1970-01-01
      • 1970-01-01
      • 2017-05-05
      • 1970-01-01
      • 2014-11-02
      • 1970-01-01
      相关资源
      最近更新 更多