里咿恩夜石 2020-06-17 10:12 采纳率: 50%
浏览 647
已采纳

有关OJ的Runtime Error:Segmentation fault问题

如题,这个问题这几天一直出现,今天挑了一道稍微短一点的题目,希望大神能帮忙解惑!
原题目的链接(后缀表达式qiu'zhi)

#include<stdio.h>
typedef struct
{
    int a[300];
    int top;
} stack;
int main()
{
    int i,sum,e=0,temp,k;
    char s[300]={'0'};
    stack L;
    gets(s);
    i=0;
    for(i=0; s[i]!='@'; i++)
    {
        if(s[i]<='9'&&s[i]>='0')
        {
            L.top++;
            temp=s[i]-'0';
            k=i+1;
            while(s[i]!='@')
            {
                if(s[k]<='9'&&s[k]>='0')
                {
                    temp=temp*10+(s[k]-'0');
                    k++; i++;
                }
                else{break;}
            }
            L.a[L.top]=temp;
        }
        else if(s[i]=='+'||s[i]=='-'||s[i]=='*'||s[i]=='/')
        {
            switch(s[i])
            {
                case '+':e=L.a[L.top-1]+L.a[L.top]; break;
                case '-':e=L.a[L.top-1]-L.a[L.top]; break;
                case '*':e=L.a[L.top-1]*L.a[L.top]; break;
                case '/':e=L.a[L.top-1]/L.a[L.top]; break;
                default:break;
            }
            L.a[L.top-1]=e;
            L.a[L.top]=0;
            L.top--;
        }

    }
    printf("%d",L.a[L.top]);
    return 0;
 } 
  • 写回答

1条回答 默认 最新

  • qiu_shaofeng 2020-06-17 11:57
    关注

    stack L没初始化,没处理带符号数的输入,运行时可能产生错误。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 11月17日

悬赏问题

  • ¥50 永磁型步进电机PID算法
  • ¥15 sqlite 附加(attach database)加密数据库时,返回26是什么原因呢?
  • ¥88 找成都本地经验丰富懂小程序开发的技术大咖
  • ¥15 如何处理复杂数据表格的除法运算
  • ¥15 如何用stc8h1k08的片子做485数据透传的功能?(关键词-串口)
  • ¥15 有兄弟姐妹会用word插图功能制作类似citespace的图片吗?
  • ¥200 uniapp长期运行卡死问题解决
  • ¥15 latex怎么处理论文引理引用参考文献
  • ¥15 请教:如何用postman调用本地虚拟机区块链接上的合约?
  • ¥15 为什么使用javacv转封装rtsp为rtmp时出现如下问题:[h264 @ 000000004faf7500]no frame?