在main和struct中初始化char数组

时间:2014-10-29 04:01:46

标签: c arrays string struct char

我试图初始化一组字符

如果我这样做,主要工作正常

char arr1[20] = "initial";
printf("%s", arr1);

但是如果我尝试在其他任何地方(例如结构体中)执行此操作,请尝试在我的主函数中使用它,如

struct foo 
{
    char arr1[20] = "initial";
}

int main(void)
{
     struct foo foobar;
     printf("%s", foobar.arr1);
}

struct foo 
{
    char arr1[20];
}

int main(void)
{
     struct foo foobar;
     foobar.arr1 = "initial";
     printf("%s", foobar.arr1);
}

我开始收到错误。为什么一个工作而另一个不工作?

2 个答案:

答案 0 :(得分:2)

试试这样..

struct foo 
{
char arr1[20];
}

int main(void)
{
 struct foo foobar;
 strcpy(foobar.arr1,"initial");
 printf("%s", foobar.arr1);
}

答案 1 :(得分:2)

您正在将结构定义变量初始化混合在一起。

结构定义说明哪些类型构成结构以及它们的名称是什么,例如:

struct foo 
{
    char arr1[20];
};

说“struct foo是我们刚刚定义的类型,由char”的数组[20]组成。目前还没有这种类型的实际变量。

然后,您可以使用与第一个示例中声明和初始化arr1类似的方式声明和初始化此类型的实例:

struct foo foobar = { "initial" };