错误消息说运行时错误(SEG)不断出现

时间:2015-11-16 19:16:01

标签: c++

我向网站提交了我的问题解决方案(http://opc.iarcs.org.in/index.php/problems/WORDLIST)。它由在线评委提供服务。每次提交时,都会显示运行时错误并显示以下消息:

运行时错误:SEG 描述:分段故障 运行时:0

这是什么错,我该如何解决? 注意:我对c ++的了解是中级的,如果您能以简单的方式解释它,我将不胜感激 这是我的问题代码:

#include<iostream>
#include<ctype.h>
#include<string.h>
using namespace std;
class problem
{
public:
int nol,k,j,w,cp;
char inp[1000][80],qed[1000][80];

problem()
{
k=j=w=cp=0;
}

void input() 
{
    cin>>nol;cin.get();
    for(int i=0;i<nol;i+=1)
    {   
    cin.getline(inp[i],80);
    cin.clear();
    }
    cout<<endl;
    lineprocess();
}

void lineprocess() 
{
    if(k<nol)
    wordprocess();
    else
    display();
}

void wordprocess()
{
    for(;;)
    {
        if(ch(inp[k][cp]))
        {qed[w][j]=0;break;}

        else 
        {
        qed[w][j]=tolower(inp[k][cp]);
        j+=1;cp+=1;
        }
    }
    decide();
}

void decide()
{
    if(inp[k][cp]==0)
    {
        w+=1;
        cp=0;
        j=0;
        k+=1;
        lineprocess();
    }

    else
    {
        w+=1;
        j=0;
        cp+=1;
        wordprocess();
    }
}

int ch(char a)
{
    if(!isalpha(a))
    return 1;
    else return 0;
}

void display()
{
    char dumm[80]="";
    qed[w][0]='\0';
    sortarray();
    removerep();
    for(int i=0;i<=w;i+=1)
    if(strcmp(qed[i],dumm)!=0)
    if(strcmp(qed[i],qed[i+1])!=0)
    cout<<qed[i]<<endl;
}

void sortarray()
{
    char ub[80];
     for(;checksort();)
     {
        for(int q=0;q<w;q++)
        {
            if(strcmp(qed[q],qed[q+1])>0)
            {   
                strcpy(ub,qed[q]);
                strcpy(qed[q],qed[q+1]);
                strcpy(qed[q+1],ub);
            }
        }
     }

}


int checksort()
{
    int t=0;
    for(int i=0;i<w;i+=1)
    {
        if(strcmp(qed[i],qed[i+1])>0)
        {t+=1;break;}
    }
    return t;
}

void removerep()
{
    int nodw=0;
    for(int i=0;i<w;i+=1)
    if(strcmp(qed[i],qed[i+1])!=0)
    nodw+=1;
    cout<<nodw<<endl;
}
};

int main()
{
problem r2d2;
r2d2.input();
return 0;
}

1 个答案:

答案 0 :(得分:1)

从链接页面:

  

您可以假设N≤10000

因为您正在使用

char inp[10000][80],qed[10000][80];

您可能会访问超出有效范围的内存,这会导致您遇到问题。将它们更改为:

fopen(filePath, "rb")