c++ - 查找数组中所有正确和错误的字符
问题描述
我正在编写一个代码,我想检查任何输入的字符值是否属于上面的数组。如果它没有字母,我想将 +1 添加到 e。这是我的代码:
#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,我输入了数组中的字符,反之亦然。
任何帮助将不胜感激。
解决方案
并非函数的所有代码路径都f1
返回值;实际上你的编译器应该告诉你这个。因此,如果找不到您的角色(即循环结束),那么函数将返回的内容是未定义的(行为)。如果它返回true
,那么这就是您正在观察的行为。但是请注意,在这种情况下,该函数可能会返回任何内容,因此您不能依赖此行为。
写
bool f1(char x)
{
int i;
for (i = 0; i < 10; i++) {
if (x == word[i]) {
return true;
}
}
return false;
}
它应该可以工作。
顺便说一句:请注意,C-functionstrchr
提供了非常相似的功能(尽管它仅适用于 -0
终止的字符串)。
推荐阅读
- php - 使用 C9。无法使用 PHP 连接到 MySQL 数据库
- python - 使用 spyder 时如何获取函数的“帮助”?
- android - 如何在模拟器中部署离子应用程序时解决错误
- docker - 我们可以在 Docker 文件 COPY 命令中使用本地环境变量吗?
- entity-framework - 使用 fluent API 设置模型属性的显示名称
- javascript - 尝试使用 JavaScript 和 HTML/CSS 显示文本
- mysql - 升级到 1.0 后无法升帆
- c# - asp.net上传文件License file not found错误
- php - PHP基本登录脚本不会登录
- javascript - 如何在具有循环结构的打字稿中复制primeNG树ByValue