我认为我的英语只是不好理解关于此的其他文章。但无论如何:C编程 - 一个灵活的阵列成员的非静态初始化
我只是想我可以写一个程序(在C),可以存储一套卡。 不复杂,只需存储卡的值和名称并将其打印出来。 我是C语言的初学者,因为我在书中的“结构中的字符串”一节中,我想自己尝试一下结构。这是到目前为止我的代码:
#include <stdio.h>
struct card
{
int value;
char name[];
};
int main(void)
{
const struct card heart[13] = { {2,"two"}, {3,"three"}, {4,"four"}, {5,"five"}, {6,"six"}, {7,"seven"}, {8,"eight"}, {9,"nine"}, {10,"ten"}, {11,"jack"}, {12,"queen"}, {13,"king"}, {14,"ace"} };
int i;
for (i = 0; i < 13; ++i)
{
printf("The card heart-%s has the value of %i", heart[i].name, heart[i].value);
}
return 0;
}
我只是想测试它是否正常工作,所以我就写了心脏卡中的代码。如果我想编译这个文件,我的编译器(gcc/mingw)以26个错误命中我。它说: “(接近初始化心脏[0])” “非静态初始化一个灵活的阵列成员” 我真的不明白这一点。在书中,一切都按预期工作。我试图重建书中的代码并更改名称,但它不起作用。我认为这是字符串的一个问题,因为如果我只使用整数,那么一切正常。 在已阅读另一篇文章中,应该手动分配每个字符串,并且有一个代码示例,但我不知道所有行应该是什么意思,并且我想了解我的代码的作用,所以我不复制+粘贴。
你能解释一下为什么这不起作用吗? PS:我现在正在写窗口,所以请不要使用bash命令来解释或类似的东西。 我也是德语,我的英语不是“鸡蛋黄”,尝试解释而不使用复杂的“句子构建”(我希望你知道我的意思是:D)和不常见的单词。
感谢您的帮助!
,也许你应该尝试编译先简单的东西? –
我怀疑你需要为卡名分配一些'char's。在'struct card'中,尝试从'char name []'改为'char name [16]' – yano
或者你可以尝试'const char * name'。 – user3528438