使用cstrings的C++分段故障

C++ Segmentation fault using cstrings

本文关键字:分段 故障 C++ cstrings 使用      更新时间:2023-10-16

我正试图将c字符串传递到一个函数中,并打印出一个表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;
    }
}

labs[6]是一个有6行的数组,第一行是[0],最后一行是[5],cols也是如此,所以在fillarrays中将<=6更改为<6

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

仔细看这里—这将填充一个7x7阵列(行和列的索引为0到6)。但是数组只有6x6,所以您试图在数组的边界之外进行写入。

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