这个反向字符串代码(C)有什么问题

这个反向字符串代码(C)有什么问题,c,malloc,C,Malloc,这是一个返回反向字符串的代码,如“ABC”返回“CBA”,但它返回这个“CBA”═²²²²ß♣Y*&s”。 怎么了 char* inv(char* C) { int lenght = strLenght(C)-1; int idx=0; char* tempStr = (char*)malloc(lenght+2); for (;lenght>=0;lenght--,idx++) { tempStr[idx] = C[lenght]

这是一个返回反向字符串的代码,如“ABC”返回“CBA”,但它返回这个“CBA”═²²²²ß♣Y*&s”。 怎么了

char* inv(char* C)
{
    int lenght = strLenght(C)-1;
    int idx=0;

    char* tempStr = (char*)malloc(lenght+2);
    for (;lenght>=0;lenght--,idx++)
    {
        tempStr[idx] = C[lenght];
    }
    return tempStr;
}
int strLenght(char* str)
{
    int lenght=0;
    while(str[lenght] != '\0')
        lenght++;
    return lenght;
}

int main(int argc, char *argv[])
{
    char* st= "ABC";
    char* sr = inv(st);
    printf("%s",sr);
}

您的
tempStr
不是以null结尾的。也是c语言中的一个集成函数,您不必自己编写。

您的
tempStr
不是以空结尾的。也是c语言中的一个集成函数,您不必自己编写。

如评论所述,我缺少“\0”,谢谢。

如评论所述,我缺少“\0”,谢谢。

\35;
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void reverse(char *des, char *src)
{
    int len = strlen(src) + 1;      //strlen() can't calculate the '\0'
    int i, j;
    for (i = 0, j = strlen(src) - 1;
         i < len; i++, j--) {
        des[i] = src[j];
    }
    des[i] = '\0';      //important!!
}
int main(int argc, char *argv[])
{
    char* st= "ABC";
    char  sr[strlen(st) + 1];
    reverse(sr, st);
    printf("%s",sr);
}
#包括 #包括 无效反向(char*des,char*src) { int len=strlen(src)+1;//strlen()无法计算“\0” int i,j; 对于(i=0,j=strlen(src)-1; i
#包括
#包括
#包括
无效反向(char*des,char*src)
{
int len=strlen(src)+1;//strlen()无法计算“\0”
int i,j;
对于(i=0,j=strlen(src)-1;
i
我刚刚在
MinGW
上试用了你的程序,它运行得非常好,也就是说,我观察到
CBA
作为输出。@Ganesh你很幸运,在内存中的字符串旁边有一个
'\0'
。谢谢你的回复,就是这样,我现在觉得自己好笨。我刚刚在
MinGW
上试用了你的程序,它运行得非常好,也就是说,我观察到
CBA
作为输出。@Ganesh你很幸运,在内存中的字符串旁边有一个
'\0'
。谢谢你应该有回复的帖子,就是它,我现在觉得自己好笨。阿明比其他人都先给出了正确的答案。我认为最好接受他的答案,如果你还没有投票的话,那就投票吧。阿明在其他人之前公布了正确的答案。我想如果你还没有接受他的答案并投票表决,那会很好。它不符合我的需要,所以我不能使用它,但是代码本身看起来很好。是的,不同的API需要不同的算法。它不符合我的需要,所以我不能使用它,但是代码本身看起来很好。是的,不同的API需要不同的算法。