使用cstrings进行C ++分段错误

时间:2015-11-26 21:35:37

标签: c++ segmentation-fault

我正在尝试将c-string传递给函数并打印出一个6x6表。但是我的代码一直在编译时出错。分段错误。我知道seg错误是当程序寻找不存在的东西时。即使经过大量研究,我也不确定如何解决这个问题或如何改变它。非常感谢任何建议。

这是我的代码:

#include <iostream>

using namespace std;

void fillarrays(int labs[][6]);
void printarrays(int labs[][6]);

int main()
{

    int labs[6][6];

    fillarrays(labs);
    printarrays(labs);

    return 0;
}

void fillarrays(int labs[][6])
{

    for(int row = 0; row<=6; row ++)
    {
        for(int col=0; col<=6; col++)
        {
            labs[row][col] = row;
        }
    }
}
void printarrays(int labs[][6])
{

    cout << "Labs: " << '\t' << '\t' << endl;;
    for(int rows=0 ; rows<6; rows++)
    {
        for(int cols=0; cols<6; cols++)
        {
            cout << '\t' << labs[rows][cols] << " ";
        }
        cout << endl;
    }
}

2 个答案:

答案 0 :(得分:3)

labs [6] [6]是一个包含6行的数组,第一行是[0],最后一行是[5],对于cols是相同的,所以在{<=6更改为<6 {1}}。

fillarrays

答案 1 :(得分:2)

for(int row = 0; row<=6;row ++) {
    for(int col=0; col<=6; col++) {
        labs[row][col] = row;
    }
}   

仔细观察 - 这填充了一个7x7数组(行和列的索引0到6)。但是阵列只有6x6,所以你试图在数组的边界外写字。

这是一个相当常见的错误;将<=更改为< s。