1. ホーム
  2. c++

[解決済み】変数' '周りのスタックが破損していた。

2022-02-18 09:10:49

質問

void GameBoard::enterShips()
{
    char location[1];
    int ships = 0;
    int count = 1;

    while(ships < NUM_SHIPS)
    {
        cout << "Enter a location for Ship " << count << ": ";
        cin >> location;
        cout << endl;

        Grid[location[0]][location[1]] = SHIP;
        ships++;
        count++;
    }
}

戦艦のゲームを書いています。ボードレイアウトが動作し、コンピュータがランダムに船を生成しています。今、私は、ユーザーに船の座標を入力するよう促すこの方法に取り組んでいます。 プログラムを実行すると、5隻の船を入力することができます。6隻目を入力すると、このようなエラーが発生します。

変数の位置の周りのスタックが破損していました。

Iveはオンラインで答えを探し、排他的な何かを発見していない。

何かご助言があればお願いします。

解決方法は?

のメモリアドレスをプロンプトしています。 location の配列が表示されます。位置のインデックスは別に聞くべきでしょう。

void GameBoard::enterShips()
{
    int location[2];
    int ships = 0;
    int count = 1;

    while(ships < NUM_SHIPS)
    {
        cout << "Enter a location for Ship " << count << ": ";
        cin >> location[0];
        cin >> location[1];
        cout << endl;

        Grid[location[0]][location[1]] = SHIP;
        ships++;
        count++;
    }
}

お知らせ int location[2]; サイズ1の配列は1つの要素しか保持できないからです。また、要素の型もintに変更しました。コンソールから char を読み込むと ASCII 値になり、おそらくあなたが望むものではありません。