7

私は C++ を使用して BlackJack ゲームに取り組んでおり、その中に次のコードがあり、エラーが発生しています。

typedef struct
{
    int value;
    char suit[8];
    char name[8];
}Deck;


Deck Cards[52] = {{ 1,"Ace","Hearts"},{ 2, "Two","Hearts"}, { 3, "Three", "Hearts"}, { 4, "Four","Hearts"}, { 5,"Five","Hearts"},{ 6,"Six", "Hearts06"},
{ 7,"Seven","Hearts"},{ 8,"Eight","Hearts"},{ 9,"Nine","Hearts"},{ 10,"Ten","Hearts"},{10,"Jack","Hearts"},{10,"Queen","Hearts"},{10,"King","Hearts"},
{ 1,"Ace","Clubs"},{2, "Two", "Clubs"},{3,"Three","Clubs"},{4,"Four","Clubs"},{5,"Five","Clubs"},{6,"Six","Clubs"},{7,"Seven","Clubs"},{8,"Eight","Clubs"},
{ 9,"Nine","Clubs"},{10,"Ten","Clubs"},{10,"Jack","Clubs"},{10,"Queen","Clubs"},{10,"King","Clubs"},
{ 1,"Ace","Diamonds"},{2,"Two","Diamonds"},{3,"Three","Diamonds"},{4,"Four","Diamonds"},{5,"Five","Diamonds"},{6,"Six","Diamonds"},{7,"Seven","Diamonds"},
{ 8,"Eight","Diamonds"},{9,"Nine","Diamonds"},{10,"Ten","Diamonds"},{10,"Jack","Diamonds"},{10,"Queen","Diamonds"},{10,"King","Diamonds"},
{ 1,"Ace","Spades"},{ 2,"Two","Spades"},{3,"Three","Spades"},{4,"Four","Spades"},{5,"Five","Spades"},{6,"Six","Spades"},{7,"Seven","Spades"},
{ 8,"Eight","Spades"},{ 9,"Nine","Spades"},{10,"Ten","Spades"},{10,"Jack","Spades"},{10,"Queen","Spades"},{10,"King","Spades"}};

エラーは_

Main.c:39:127: error: initializer-string for array of chars is too long [-fpermissive]

39行目は、上記のコードの最後の行です

コンパイラがエラーをスローする理由を理解するのを手伝ってください

4

2 に答える 2

19

文字列"Diamonds"はヌル終了文字を含めて 9 文字です。したがって、name少なくとも 9 つの要素が必要です。

ただし、nameメンバーを呼び出す必要がsuitあり、その逆も同様です。

于 2014-01-28T14:15:10.023 に答える
3

それ以外の:

int nMyArray[8]= {5,6,5,4,6,7,4,2};

これを好む:

int nMyArray[]= {5,6,5,4,6,7,4,2};

配列を初期化するとき。前者はサイズを指定する必要があります。後者はサイズを計算します (コンパイル時のみ)。

于 2014-01-28T14:33:53.820 に答える