问题描述
有什么方法可以将一个数组中的值复制到结构体变量中?下面是一个例子:
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 数组)
我该怎么做?有什么建议吗?
解决方法
有没有办法将一个数组中的值复制到一个结构体变量中?
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 不是这种情况。