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

有关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日

悬赏问题

  • ¥15 freertos下使用外部中断失效
  • ¥15 输入的char字符转为int类型,不是对应的ascall码,如何才能使之转换为对应ascall码?或者使输入的char字符可以正常与其他字符比较?
  • ¥15 devserver配置完 启动服务 无法访问static上的资源
  • ¥15 解决websocket跟c#客户端通信
  • ¥30 Python调用dll文件输出Nan重置dll状态
  • ¥15 浮动div的高度控制问题。
  • ¥66 换电脑后应用程序报错
  • ¥50 array数据同步问题
  • ¥15 pic16F877a单片机的外部触发中断程序仿真失效
  • ¥15 Matlab插值拟合差分微分规划图论