C++ 比较字符会导致总线错误
我在试图找出运行时错误时迷失了方向。我有一个struct数据类型,以及它在数组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); 你
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;
}