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

标签 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
        }
    }
}   

最佳答案

已编辑

它显示错误是因为您正在将数组 casuality 的基址分配(我假设您打算在这里进行比较)到字符串 "output"

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

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

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

关于c - 如何在while循环中使用结构数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31786439/

相关文章:

c++ - 与其他跨平台正则表达式库相比,Oniguruma 有多好?

c++ - 为什么我可以更改数组

javascript - 尝试 "crossover"两个数组使用第一个数组的子集并尽可能保持第二个数组的顺序

c - 结构内部结构

c++ - 如何创建一个指向函数指针的指针?

c - fgets() 似乎溢出输入到其他变量

c - 递归二分查找c

c - 如何返回 char 指针数组?我的代码有什么问题?

java - 以某种方式打印 int 数组

c - 结构声明 : Valid initializer in declaration?