C++ 比较字符会导致总线错误

C++ 比较字符会导致总线错误,c++,char,C++,Char,我在试图找出运行时错误时迷失了方向。我有一个struct数据类型,以及它在数组items[]中的实现。在结构中,定义了一个字符名。 我还使用cin将用户输入读入char数据类型 i=0; do { printf("%c\n", items[i].name); printf("%c\n", itemname); //if ( items[i].name == itemname ) //found=true; i++; } while (i<numofitems || found); 你

我在试图找出运行时错误时迷失了方向。我有一个struct数据类型,以及它在数组
items[]
中的实现。在结构中,定义了一个
字符名
。 我还使用cin将用户输入读入
char
数据类型

i=0;
do {
printf("%c\n", items[i].name);
printf("%c\n", itemname);

//if ( items[i].name == itemname ) 
//found=true;
i++;
} while (i<numofitems || found);

你知道为什么我不能简单地比较一个字符是否等同于另一个吗?

正如@chris提到的,你的终止条件看起来是错误的。如果将find设置为true,循环将永远不会终止。

您的条件应该是
i是。还要注意,打印出10个字符。每个循环迭代打印两次,因此循环执行良好,直到i超过numofitems。由于此时的'found==true',循环尝试第六次迭代,导致总线错误(通常称为a)

当您设置“found=true”时,将使循环永远运行。或者更改循环测试,以便在设置“找到”时退出,例如

} while (i < numofitems && found == false );

“总线错误”,我相信是指您试图使用未正确对齐的内存地址。你可能已经超过了极限。啊!它与while循环中的代码无关+我道歉。这一评论从一开始就应该是一个答案。
for (int i = 0; i <numitems; ++i)
    std::cout << items[i].name << '\n';
    std::cout << itemname << '\n';

    if ( items[i].name == itemname ) 
        break;
}
} while (i < numofitems && found == false );
if ( items[i].name == itemname ) {
    found = true;
    break;
}