【问题标题】:Setting a 2d char array of spaces [closed]设置一个二维字符数组的空格[关闭]
【发布时间】:2014-07-15 19:40:19
【问题描述】:

我正在尝试在类的构造函数中初始化 2d 字符数组。构造函数假设只是将 char 数组的值设置为空格:' '。但是尝试这样做会导致 SegFault。

构造函数:

Board::Board(void)
{
    int i,j;
    for (i=0;i<10;i++)
    {
        for (j=0;i<10;j++)
        {
            score[i][j] = ' ';
        }
    }
}

其中 score 是一个私有类成员和一个 10 x 10 字符数组。

【问题讨论】:

  • 告诉我们您使用的语言可能会有所帮助。
  • 我知道我不知道,我在尝试修复错误时添加了它,它没有效果
  • 您已将i&lt;10 而非j&lt;10 放在第二个循环中。
  • 您是否在调试器中单步执行此操作?我喜欢这样做,同时考虑应该发生的事情。如果你这样做,我认为你会很快发现这种错误。无论如何倾向于为我工作。 YMMV。

标签: c++ arrays class 2d private


【解决方案1】:

你的程序有几个错误。

这是最终代码:

#include <stdio.h>

int main(void) {
    int i,j;
    char score[10][10];
    for (i=0; i<10; i++){
        for (j=0; j<10; j++){
            score[i][j] = ' ';
        }
    }

    return 0;
}

你可以看到它正在编译here

错误:

  1. 你还没有申报分数,(char score[10][10];)
  2. for (j=0;i&lt;10;j++) 行中,您正在递增变量j,但检查变量i,因此它将进入无限循环
  3. 不需要线路 (j=0;)
  4. score[i][j] = ; 不正确,应该是 score[i][j] = ' ';

[我看到您在更新中更正了第 2 点和第 4 点,它们应该出现在答案中,以免人们感到困惑,所以我会尝试更新一次问题]

【讨论】:

  • @ooga 它不会跳过,正如在第一种情况下看到的那样,我将是 0,然后它将作为 0
  • 谢谢我的问题是我在第二个 for 循环中,没有抓住它谢谢!
  • std::memset(&amp;score, ' ', sizeof score); 替换两个循环——当然如果你不切换到std::array 会更好
猜你喜欢
  • 1970-01-01
  • 2011-04-13
  • 1970-01-01
  • 1970-01-01
  • 2020-06-04
  • 2021-06-12
  • 2012-10-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多