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

标签 c++ char

我迷失了尝试找出运行时错误。我有一个结构数据类型,并在数组 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/

相关文章:

c++ - 在条件后从特定节点生成新消息

c++ - 如何检索当前事件窗口光标下的单词?

c++ - 处理可能依赖的顶点的创建/销毁时的 VBO/VAO 内存管理实践

c++ - 读取三重嵌套 for 循环

C++ 数组作为参数,编辑 : now includes variable scoping

c - 字符指针的整数警告

php - gChartPHP 文档

c++ - 用空格初始化字符数组

c - 为什么这个 Scanf 会导致无限循环?

c - 在 C 中将字符串存储到 Char 数组中 & 段错误