考上研究僧 2022-09-29 20:46 采纳率: 97.4%
浏览 36
已结题

验证回文串,报错溢出

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

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;i<j;i++,j--)
    {
        if(news[i]!=news[j])
        {
            return false;
        }
    }
    return true;
}
  • 写回答

1条回答 默认 最新

  • Xiao Ice 2022-09-29 21:15
    关注

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

    char* news = (char*)malloc(strlen(s) + 1);
    
    //要在return 之前free掉
    free(news);
    
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 10月13日
  • 已采纳回答 10月5日
  • 创建了问题 9月29日