我正在编写一个代码,我想检查是否有任何输入的字符值属于上面的数组。如果没有字母,我想在e上加上+1。这是我的代码:
#include <iostream>
using namespace std;
char word[10] = { 'H', 'o', 'u', 's', 'e' };
bool f1(char x)
{
int i;
for (i = 0; i < 10; i++) {
if (x == word[i]) {
return true;
}
}
}
int main()
{
char x;
int e = 0, k = 1;
while (k <= 10) {
cin >> x;
if (f1(x) != true)
e++;
k++;
}
cout << e << endl;
return 0;
}
我的问题是我输入的字符在数组中,反之亦然,结果是e = 0或e = 10。
任何帮助将不胜感激。
答案 0 :(得分:1)
并非函数f1
的所有代码路径都返回值;实际上,您的编译器应该已经告诉您了这一点。因此,如果找不到您的字符(即循环结束),则该函数将返回什么(行为)是不确定的。如果它返回true
,则这是您正在观察的行为。但是请注意,在这种情况下该函数可能会返回任何内容,因此您不能依赖此行为。
写
bool f1(char x)
{
int i;
for (i = 0; i < 10; i++) {
if (x == word[i]) {
return true;
}
}
return false;
}
它应该可以工作。
顺便说一句:请注意,C函数strchr
提供了非常相似的功能(尽管那时它仅适用于0
终止的字符串)。