验证回文串,报错溢出

验证回文字符串,提交报错是这样的:

img


不太清楚是为什么?


bool isPalindrome(char * s){
    char news[1000];
    int i=0,j=0,news_len;
    while(s[i]!='\n')
    {
        if(s[i]>='0'&&s[i]<='9'||s[i]>='a'&&s[i]<='z'||s[i]>='A'&&s[i]<='Z')
        {
            if(s[i]>='A'&&s[i]<='Z')
            {
                s[i]=s[i]+65;
            }
            news[j]=s[i];
            j++;
        }
        i++;
    }
    news_len=j;
    for(i=0,j=news_len-1;iif(news[i]!=news[j])
        {
            return false;
        }
    }
    return true;
}

感觉哈是你这个news数组不够大
不知道题目是啥样的,这个长度要是你题目里的最大长度+1
或者直接用下面这个~而且确定s是'\n'结尾的吗,会不会最后不是'\n',这些都有可能导致溢出。

char* news = (char*)malloc(strlen(s) + 1);

//要在return 之前free掉
free(news);