C - 检查结构数组的所有值是否返回相同的值

时间:2018-03-24 19:23:33

标签: c struct

我想检查struct数组的所有值是否保持相同的值,以便在struct数组中隐藏“deleted”条目。

我的结构看起来像这样:

struct spawnedObject {
    Hash objHash;
    Object obj;
    char* displayname;

    int invisibility;
    Vector3 position;

    int deleted; // 1=deleted and hidden, 0=should be listed and available
};

我想检查结构中所有条目的deleted是否为真。当它们都是真的时,让else显示空文本。

我已经尝试循环所有deleted值并在值设置为1时增加int,如下所示:

void objectManagerMenu() {
    objectVar = 0;
    int inc = 0; //store deleted entries count

    // loop through all entries. if entry deleted, increase.
    for (int i = 0; i < objectCount; i++) {
        if(spawnedObjects[i].deleted) inc++;
    }

    // check if there either are no entries, or if theyre hidden. if all stored entries are hidden, fallback to else. this is where it goes wrong.
    // problem: does not seem to fallback to else.
    if(objectCount != 0 || objectCount != inc) {
        for (int i = 0; i < objectCount; i++) {
            if(!spawnedObjects[i].deleted) { // remove hidden items from list
                char buffer[150];
                sprintf(buffer, "[ %i ] %s", i, spawnedObjects[i].displayname);

                menu.option(buffer).call(objectItemVar, i).submenu(objectItemMenu);
            }
        }
    } else {
        menu.option("Empty");
    }
}

似乎无法正常显示。

有人建议我如何以更聪明的方式做到这一点吗?

1 个答案:

答案 0 :(得分:0)

问题是你的||在if语句中,如注释中所述。

objectCount != inc

最有可能返回true

if

返回false,因为菜单为空(在您尝试测试的当前场景中)
由此else语句将始终为真(如果您的对象计数大于0),因此永远不会执行||。 将&&更改为||

如果至少有一个陈述给出了真假,为什么
window.onload=function(){ document.getElementById("myLink").click(); };会返回true &安培;&安培;只有当两个都为真且这是您想要的

时才返回true