如何在while循环中使用结构数组

时间:2015-08-03 11:47:44

标签: c arrays struct

我创建了一个typedef结构,如下所示,由4个字段组成 我已经插入了可以在下面看到的结构数组

typedef struct Signal {
    long vr;
    char name[20];
    char Type[20];
    char casuality[20];
} Signal;

我使用了如下所示的结构数组

void xmlRead()
{
    int i;
    Signal var[4];
    var[0].vr=1073741824;
    strcpy(var[0].name,"Ball1_pos");
    strcpy(var[0].Type,"Real");
    strcpy(var[0].casuality,"output");

    var[1].vr=1073741825;
    strcpy(var[1].name,"Ball2_pos");
    strcpy(var[1].Type,"Real");
    strcpy(var[1].casuality,"output");

    var[2].vr=1073741826;
    strcpy(var[2].name,"Ball1_vel");
    strcpy(var[2].Type,"Real");
    strcpy(var[2].casuality,"output");

    var[3].vr=1073741827;
    strcpy(var[3].name,"Ball2_vel");
    strcpy(var[3].Type,"Real");
    strcpy(var[3].casuality,"output");

    for(i=0; i<=3; i++)
    {
        while(var[i].casuality="output") **//Here it is showing error as expression must have modifiable lvalue//**
        {
            //Some statements
        }
    }
}   

2 个答案:

答案 0 :(得分:2)

<强>被修改

它显示错误,因为你正在分配(我假设你想在这里比较)数组casuality的基地址到字符串"output"

另一件事是你不能使用==来比较字符串,因为它总是比较两个字符串的基地址而不是内容。

因此,要比较内容,您应该使用strcmp()。所以你的while循环看起来像这样。

while(strcmp(var[i].casuality, "output") == 0)

答案 1 :(得分:0)

你应该使用函数strcmp来比较C和循环中的字符串,如下所示:

while (strcmp(var[i].casuality,"output") != 0)

你的循环中的条件是一种矫揉造作,而不是两个字符串之间的比较。