3

私はこれらの2つの配列を持っています:

const char *face[] =
{"Deuce", "Three", "Four", "Five",
 "Six", "Seven", "Eight", "Nine", "Ten",
 "Jack", "Queen", "King", "Ace", "\0"};

const char *suit[] = { " of Hearts", " of Clubs", " of Diamonds", " of Spades", "\0" };    

実際、私は C++ が得意ではないので、配列やその他の場所でいつアスタリスクを使用するかさえわかりません...誰かがそれを説明してくれれば幸いです..

とにかく、問題は、次のようにすべての可能なカードをスーツで印刷しようとしていることです。

for (int n = 0; n<strlen(*suit); n++){ //where strlen(*suit) should be 4
for(int i = 0; i<strlen(*face); i++){ //where strlen(*face) should be 13
        cout << endl << face[i] << suit[n] << endl;
    }
}

そのコードを使用すると、プログラムがクラッシュします。私は何を間違っていますか?(n<4 かつ i<13 を使用すると動作しますが、配列に項目を追加または削除すると実際に動作するようにしたい)

4

7 に答える 7

1

いくつかのこと!このチェックを行うことができます:

sizeof(suit)/sizeof(suit[0])

ただし、null ターミネータがあるため、必要以上に長く実行されます。したがって、ヌル終了文字列をスーツから削除して上記を使用するか、 for を次のように変更します。

for (int n = 0; strlen(suit[n]); n++)

顔配列についても同様です。

于 2013-04-14T18:41:02.457 に答える