如何在C ++中修复运行时错误'分段错误'

时间:2019-09-30 06:34:15

标签: c++ arrays string c++14

这是用于查找第二个字符串是否为第一个字符串的密码的代码。 为了找到它,我将加密移位存储在另一个变量中,然后比较字符串的所有相应字母以检查它们是否具有相等的移位。

#include<iostream>
#include<string>
using namespace std;
int main(){
    int q;
    cin>>q;
    int cip[q],flag[q];
    string s[q],t[q];
    for(int i=0;i<q;i++){
        cin>>s[i];
        cin>>t[i];
    }
    for(int i=0;i<q;i++){
        cip[i]=(s[i][1]+t[i][1])%26;
    }
    for(int i=0;i<q;i++){
        for(int j=0;j<s[i].size();i++){
            if((s[i][j]+t[i][j])%26==cip[i]){
                flag[i]=1;
            }
            else flag[i]=0;;
        }
    }
    for(int i=0;i<q;i++){
        if(flag[i]==1){
            cout<<cip[i];
        }
        else cout<<flag[i]-1;
    }
}
  

运行时错误:分段错误

1 个答案:

答案 0 :(得分:2)

此代码块不正确:

for(int i=0;i<q;i++){
    for(int j=0;j<s[i].size();i++){
        if((s[i][j]+t[i][j])%26==cip[i]){
            flag[i]=1;
        }
        else flag[i]=0;;
    }
}

线

for(int j=0;j<s[i].size();i++)

将其更改为j ++应该可以解决分段错误。