用C语言实现字符串的顺序颠倒

img

请问这个代码有哪些错误?实在是不知道哪错了!人已经麻了,X﹏X😪

img


char * test(char a[]) //或者你可以直接对a数组进行操作
{
    int i, j=0, k;
    //char m[100];  //不能这样用,除了函数作用域就没用了,
    //要想生效,要实际申请内存如下:
    char* m = (char*)malloc(100);
    if (m == NULL) return NULL;
    memset(m, 0, 100);
    k = strlen(a);
    for (i = k-1; i >= 0; i--) //还有  注意数组的下标是0~len-1
    {
        *(m+j) = (char)a[i];
        j++;
    }
    printf("m :%s \n", m);
    return m;
}
int main(void)
{  
    char a[100] = {0};
    gets_s(a);
    printf("a:%s \n", a);
    test(a);
    printf("a1:%s \n", a);
    char* rest = test(a);
    printf("a2:%s \n", test(a));
    printf("a2:%s \n", rest);
    return 0;
}

img

这里的i可以取0