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