在C语言中为字符串数组赋值

在C语言中为字符串数组赋值,c,C,我有一个结构,看起来像这样: struct persons\u s { 大小/数量; 字符名称[最大人数][最大姓名长度]; }; 当我尝试这样分配值时,它不起作用: struct persons\u s persons; 人数=2人; persons.names={“test1”、“test2”}; 但这是可行的: struct persons\u s persons={2,{“test1”,“test2”}; 我假设这与名称数组是常量有关,但我不确定 所以我要问: 第一种方法不起作用的

我有一个结构,看起来像这样:

struct persons\u s
{
大小/数量;
字符名称[最大人数][最大姓名长度];
};
当我尝试这样分配值时,它不起作用:

struct persons\u s persons;
人数=2人;
persons.names={“test1”、“test2”};
但这是可行的:

struct persons\u s persons={2,{“test1”,“test2”};
我假设这与
名称
数组是常量有关,但我不确定

所以我要问:

  • 第一种方法不起作用的确切原因是什么?
  • 有没有更好的方法来实现这一点?
  • 我也试过了

    char*姓名[最多人数];
    
    但这也不起作用,因为我必须将它与
    strcpy
    一起使用(作为目标,
    strcpy(persons.names[I],source);

    目前我正在这样做作业(使用第一个结构):

    struct persons\u s persons;
    人数=2人;
    strcpy(人名[0],“test1”);
    strcpy(人名[1],“test2”);
    
    您试图为指针分配一个常量(char[][]或**char),在C语言中,字符串是一个char数组,您可以使用strcpy,也可以自己使用for循环


    您的方式
    strcpy(persons.names[0],“test1”)工作正常,可能是您的最佳选择。

    这是否回答了您的问题?这是因为据我所知,
    {…}
    是用于初始化的,而不是用于赋值。所以
    variable={2,“whatever”}
    不正确,因为它是赋值,但是
    struct thing variable={2,“whatever”}是初始化,所以可以。