用指针倒置字符串debug

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
    char str[80], *t;
    char *p, *q;

    printf("请输入一串长度不超过79的字符串:\n");
    gets(str);

    p = str;
    while(*p)
    {
        p++;
    }

    p--;
    q = str;
    while(q < p)
    {
        *t = *p;
        *p = *q;
        *q = *t;
        q++;
        p--;
    }

    puts(str);

    system("pause");
    return 0;
}

我用的CodeBlocks编译器,编译后0error 0warning,但是程序的运行结果怎么都不对,结果如下:
图片说明

请求大佬指点!

指针t没有指向一个有效的内存。
要么 t = (char *)malloc(sizeof(char));
要么更简单,直接t不用指针

#include<stdio.h>
#include<stdlib.h>
int main(void)
{
    char str[80], t;
    char *p, *q;

    printf("请输入一串长度不超过79的字符串:\n");
    gets(str);

    p = str;
    while(*p)
    {
        p++;
    }

    p--;
    q = str;
    while(q < p)
    {
        t = *p;
        *p = *q;
        *q = t;
        q++;
        p--;
    }

    puts(str);

    system("pause");
    return 0;
}

图片说明

问题解决的话,请点下采纳