【问题标题】:Assign values to string array in C在C中为字符串数组赋值
【发布时间】:2020-08-16 12:53:11
【问题描述】:

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

struct persons_s
{
  size_t count;
  char   names[MAX_PERSON_COUNT][MAX_PERSON_NAME_LENGTH];
};

当我尝试像这样分配值时,它不起作用:

struct persons_s persons;
persons.count = 2;
persons.names = { "test1", "test2" };

但这有效:

struct persons_s persons = { 2, { "test1", "test2" } };

我假设这与 names 数组保持不变有关,但我不确定。

所以我问:

  1. 第一种方法不起作用的确切原因是什么?
  2. 有没有更好的方法来实现这一点?

我也试过

char *names[MAX_PERSONS_COUNT];

但这也不起作用,因为我必须将它与strcpy(作为目标,strcpy(persons.names[i], source);)一起使用。

目前我正在做这样的分配(使用第一个结构):

struct persons_s persons;
persons.count = 2;
strcpy(persons.names[0], "test1");
strcpy(persons.names[1], "test2");

【问题讨论】:

标签: c


【解决方案1】:

您正在尝试将一个常量分配给一个指针(char[][] 或 **char),在 C 中,字符串是一个字符数组,您可以使用 strcpy 或使用 for 循环自己制作。

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

【讨论】:

    猜你喜欢
    • 2012-05-24
    • 2021-09-11
    • 2011-12-08
    • 2016-05-12
    • 1970-01-01
    • 2017-09-27
    • 1970-01-01
    • 2020-07-31
    • 2011-09-08
    相关资源
    最近更新 更多