【已解决】关于C语言程序“输入一段字符串检查其是否为回文”中数组越界访问的问题

程序能够正常运行,但是报错访问无效数据,源码是自己写的
当第17行中的<=号改为<号后就不提示报错了
但我没想明白为什么越界了
主要因为我这边逻辑始终没弄清楚,我总觉得<号的逻辑不合适,但是还是运行成功了
代码:


//判断一个输入的字符串是否回文
#include <stdio.h>
int main()
{
    int ct = 0, y = 1;
    char a[40];
    printf("回文判断\n请输入一段字符串:");
    gets_s(a, 40);
    //判断字符串长度
    for (int i = 0; i < 40; i++)
    {
        if (a[i] != 0)
            ct++;
        else break;
    }
    for (int i = 0; i <=(ct/2); i++)
    {
        if (a[i] != a[ct - (i + 1)])
        {
            y = 0;
            break;
        }
    }
    if (y)
        printf("是回文");
        else
            printf("不是回文");
    return 0;
}

代码测试没毛病啊,是不是没保存啊?保存一下再编译试试

19行前你没有对ct是否等于零做判断。当ct=0时19行会出bug。