函数返回C中的反向字符串 - 分配

时间:2013-03-05 19:33:35

标签: c reverse

我需要分配t2,但我不确切知道如何。

char *reverse(char *t)
{
    int length= strlen(t);
    char *t2 = (char *) malloc(length * sizeof(char*));
    for(int i= (length-1);i>=0;i--)
       t2[i]=t[length-1];
    return t2;
}

请帮忙吗?

3 个答案:

答案 0 :(得分:3)

你很亲密。

char *t2 = malloc(length + 1); // reserve space for a null terminator

您可能希望该循环从length开始,而不是length - 1。循环内的赋值也是错误的(您只更改目标位置,而不是源)。确保在返回字符串之前将其终止。

编辑说明:

  1. 您无需在C程序中转换malloc()的返回值。
  2. sizeof(char)1 - 无需繁殖。
  3. 根据您正在寻找的语义,您可能根本不需要malloc()。字符串反转可以在C。
  4. 中就地完成

答案 1 :(得分:2)

代码有多处错误。

正如之前提到的sizeof(char) != sizeof(char*),前者是一个char的大小,第二个是指针的大小。

此外,循环仅为t2中的所有索引分配相同的值 t2[i]=t[length-1];

此外,它应该以{{1​​}}作为参数,因此甚至可以将const char *字符串传递给它。

字符串末尾没有设置空字符const char*

此代码应该这样做:

\0

答案 2 :(得分:0)

char *t2 = malloc(length*sizeof(char) + 1);

你malloc一个指向char类型的指针加一个零终止