我需要分配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;
}
请帮忙吗?
答案 0 :(得分:3)
你很亲密。
char *t2 = malloc(length + 1); // reserve space for a null terminator
您可能希望该循环从length
开始,而不是length - 1
。循环内的赋值也是错误的(您只更改目标位置,而不是源)。确保在返回字符串之前将其终止。
编辑说明:
malloc()
的返回值。sizeof(char)
是1
- 无需繁殖。malloc()
。字符串反转可以在C。答案 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类型的指针加一个零终止