【问题标题】:initializer-string for array of chars is too long error字符数组的初始化字符串太长错误
【发布时间】:2014-02-19 21:18:08
【问题描述】:

我正在使用 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 行是上面贴出的代码的最后一行

请帮助我找出编译器抛出错误的原因

【问题讨论】:

  • 数组的大小不应该是52吗?另外我认为“Hearts06”不是你想要的。
  • 您可以使用std::strings 和std::vectors。那么你就不会在数组大小上犯错了。
  • @drescherjm 在代码中是 52,我正在尝试通过更改它,我已经编辑了问题
  • 玩得开心,编写一个 A 可以被视为 1 或 11 的逻辑
  • @CashCow 如果你帮不上忙,请不要帮忙。我寻求帮助以找出导致错误的原因,而不是为在 C++ 中实现 BlackJack 的最佳实践进行代码审查

标签: c++ blackjack


【解决方案1】:

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

但是,您的 name 成员似乎应该称为 suit,反之亦然。

【讨论】:

  • 忘了考虑终止空字符,谢谢,它有效!
  • 是的,他初始化它的方式是,当然钻石是一套西装。当然,这确实不是处理这种情况的方法
  • @CashCow 我什至没有注意到。
【解决方案2】:

代替:

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

喜欢这个:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-14
    • 2013-10-10
    • 2014-10-16
    • 1970-01-01
    • 1970-01-01
    • 2015-12-26
    • 2011-12-11
    相关资源
    最近更新 更多