【问题标题】:C++ Segmentation fault using cstrings使用 cstrings 的 C++ 分段错误
【发布时间】:2015-11-27 05:47:23
【问题描述】:

我正在尝试将 c 字符串传递给一个函数并打印出一个 6x6 的表格。但是我的代码一直在编译并出现错误。分段错误。我知道一个段错误是当程序寻找不存在的东西时。即使经过大量研究,我也不确定如何解决此问题或如何更改此问题。任何建议将不胜感激。

这是我的代码:

#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;
    }
}

【问题讨论】:

  • 嗨,我是新手,请耐心等待。我是一名 35 岁的 CIS 学生,第一次学习 C++。我已经为这项任务工作了 2 周。我正在尝试将 c 字符串传递给函数并打印出 6x6 表。但是我的代码一直在编译并出现错误。分段错误。我知道一个段错误是当程序寻找不存在的东西时。即使经过大量研究,我也不确定如何解决此问题或如何更改此问题。任何建议将不胜感激。
  • for(int row = 0; row&lt;=6;row ++) 循环 7 次
  • 在 fillarrays() 中的 2 是错误的,它是

标签: c++ segmentation-fault


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:
    for(int row = 0; row<=6;row ++) {
        for(int col=0; col<=6; col++) {
            labs[row][col] = row;
        }
    }   
    

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

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

    【讨论】:

      猜你喜欢
      • 2015-11-11
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-07-24
      • 2013-03-05
      相关资源
      最近更新 更多