这是一个返回反向字符串的代码,如“ABC”返回“CBA”,但它返回的是“CBA═quarterß∏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不是空终止的。而且strlen()是c语言中的一个集成函数,您不必编写自己的函数。

10-05 21:47