【问题标题】:Copy a value from an array to struct's variables将数组中的值复制到结构的变量中
【发布时间】:2021-01-01 18:46:27
【问题描述】:

有没有办法将一个数组中的值复制到结构变量中?这是一个例子:

我有一个结构体,该结构体有这些变量;

struct example
{ 
    int a;
    char b[];
};

我的主函数中有一个名为“token”的数组。 (首先,在另一个函数中,我使用 strtok 将字符串划分为标记,然后在我的主函数中使用该标记数组。

现在我的令牌数组是这样的:

token[0] = abc;
token[1] = 2;
token[2] = 10;

现在我的目标是将这些令牌的值匹配到我的结构的变量中。

喜欢;

if token [0] == "something" (应该是字符串) 然后做 int a = 3

if token [0] =="anotherthing" (应该是字符串) 然后做 int a=2

token[1] =b;(我想把token[1]的值赋给b数组)

我该怎么做?有什么建议吗?

【问题讨论】:

  • 我无法理解这一点。
  • symbol 是什么意思?您是否尝试根据strcmp 更新int 值?它并不完全清楚你在尝试什么。一个最小的代码应该是好的
  • 已更新。添加了更多信息。 @IrAM

标签: arrays c struct strtok


【解决方案1】:

有没有办法将一个数组中的值复制到结构变量中?

C 数组是一系列相同类型的连续值。它可以是一系列结构、整数或字符……任何有效类型。如果您复制这些值中的一个或多个,您当然可以对它们做任何您喜欢的事情,包括将它们分配给结构的某些部分。如果你有:

int intArray[5] = {1, 2, 3, 4, 5};

还有一个结构:

struct Example
{
    int start1; 
    int end1;
    int start2; 
    int end2;
    char symbol[];
};

struct Example ex;

然后您可以将数组中的值分配给该结构的实例的一部分,就像您进行任何其他分配一样:

ex.start1 = intArray[0];
ex.end1 = intArray[4];
ex.start2 = intArray[1];
ex.end2 = intArray[3];

您的示例的某些部分令人困惑,因为不清楚您的数组中的值是否相同:

token[0] = abc;
token[1] = 2;
token[2] = 10;

这里的abc 是什么?如果它像其他值一样是int,那很好,但它是什么以及它与其他值的关系尚不清楚。其他一些语言允许在同一个数组中使用不同类型的值,但 C 不是这种情况。

【讨论】:

  • abc 是一个字符串值。因为第一个标记是一个字符串。但其他人是 int 是的。
  • @Fenikssy 这就是令人困惑的部分; C 不允许你在同一个数组中混合字符串和整数,所以你需要考虑你想要做什么。 token 是如何声明的?我明白是个数组,但是什么类型的数组呢?
猜你喜欢
  • 2020-01-04
  • 2012-07-22
  • 1970-01-01
  • 1970-01-01
  • 2015-01-06
  • 2020-10-28
  • 2014-12-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多