我迷失了尝试找出运行时错误。我有一个结构数据类型,并在数组 items[]
中实现了它。在结构中,定义了一个char name
。
我还使用 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);
如果我取消注释 if 语句,printf("%c\n", itemname);
似乎运行了数千次,然后是 Bus error: 10
。请注意 numofitems 目前只有 5 个。
当前编写方式的输出:
A
C
B
C
C
C
D
C
E
C
知道为什么我不能简单地比较一个字符是否等同于另一个字符吗?
最佳答案
你的条件应该是i<numofitems && !found
.现在,如果其中任何一个为真,它就会继续循环,并且 found
在第三次迭代时变为真。
我会这样重写它:
for (int i = 0; i <numitems; ++i)
std::cout << items[i].name << '\n';
std::cout << itemname << '\n';
if ( items[i].name == itemname )
break;
}
关于c++ - 比较字符会导致总线错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15824181/