c语言字符串的反序存放


#include
int main()
{
    char def(char x[],int n);
    char s[5];
    int n=5;
    s[5]=def(s,n);
    printf("%s",s);
    return 0;
}
char def(char x[],int n)
{   
    int i;
    char y[n];
    scanf("%s",x);
    for(i=0;i-1-i];
    return y;
}

大一c语言课程,不是很懂,为什么return y保
报错,怎么修改

s[5]=def(s,n); s[5]已经越界了,下标范围0-4

#include <stdio.h>

void def(char x[], int n); //

int main()
{

    char s[50] = {0}; //
    int n = 50;
    def(s, n); // s[5] = def(s, n);
    printf("%s", s);
    return 0;
}
void def(char x[], int n) //
{
    int i, len = 0;
    // char y[50];
    char t;
    scanf("%s", x); //;
    while (x[len++])        ;
    len--;
    for (i = 0; i < len / 2; i++)
    {
        t = x[i];
        x[i] = x[len - i - 1];
        x[len - i - 1] = t;
    }
}

y是是一个数组,当我们只写一个单独的数组名的时候,返回的是指针。所以我们函数返回要写成char*
望采纳,不会继续问