字符阵列的初始化器 - 弦弦是太长的错误

initializer-string for array of chars is too long error

本文关键字:错误 阵列 初始化 字符      更新时间:2023-10-16

我正在使用C 进行二十一点游戏,并且其中有以下代码,我在其中遇到了错误

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 是上面发布的代码的最后一行

请帮助我弄清楚为什么编译器要丢失错误

字符串"Diamonds"具有9个字符,包括null终止字符。因此,name必须至少具有9个元素。

但是,看起来您的name成员应称为suit,反之亦然。

而不是:

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

更喜欢这样:

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

初始化数组时。前者要求您指定尺寸。后一个计算大小(仅在编译时间)。