数组边界检查和输入验证
array boundary checking and input validation
我正在用c++编写绞刑游戏,我想知道如何确保我的第一个用户输入的单词只包含字母字符,没有其他内容。当用户已经输入的单词无效时,我必须提示用户输入一个新单词。
有一些函数我用它来做,但对于一些我的检查边界函数不能正常工作。请帮忙,我不知道如何修理它。在我的第一个函数中,我要求用户输入但是,然后我使用另一个函数对这个单词进行错误检查。word1是存储我的第一个单词的数组,我假设现在所有的字母都是小写的。所以我使用字符的ASCII值来确保它在边界内。但是如果我输入45,它确实要求我重新输入单词,但是第二个单词无论它是什么都会被接受。它可以是|*%^%,反正它接受它。
void CheckBound (char word1[], int SIZE1)
{
int i;
int w1[SIZE4];
int found;
for (i=0;i<strlen(word1);i++)
{
w1[i]=(int)word1[i];
if (w1[i] >= 97 && w1[i] <= 122)
found=1;
else
{
printf("Please re-enter your word: ");
fgets(word1, SIZE1, stdin);
word1[strlen(word1)-1]=' ';
printf("%s n", word1);
}
}
return;
}
当检测到非字母数字字符时,仍然在第一个循环中遍历word1的每个字符。一旦用户输入了一个新单词,循环就以i继续!=0,这当然是不正确的
试试这个:
oid CheckBound (char word1[], int SIZE1)
{
int i;
bool ok = false;
while(!ok)
{
ok = true;
for (i=0;i<strlen(word1);i++)
{
int c = word1[i];
if (c < 97 || c > 122)
{
ok = false;
break;
}
}
if(!ok)
{
printf("Please re-enter your word: ");
fgets(word1, SIZE1, stdin);
word1[strlen(word1)-1]=' ';
printf("%s n", word1);
}
}
}
顺便说一下,这是C,不是c++。典型的c++会使用:
- std::string代替char数组/char指针存储字符串
- std::vector, std::array用于数组(而不是普通的C数组)
- 打印和输入文本流
相关文章:
- 正在尝试了解输入验证循环
- 如何在C++中检查2D数组中负值的输入验证
- 正在验证c++中用户的整数输入
- cin 的十进制输入验证?
- 输入验证以筛选出字符、字符串和一系列整数
- 输入验证将数字放入向量中
- GoogleMock:如何验证输入参数的调用次数?
- 使用函数验证输入
- 如何验证输入仅是数字数字
- 提升灵气验证输入解析器
- 当循环不中断时,使用 cin.ignore 和 cin.clear() 来验证输入
- C++,如何验证输入的数据是否为正确的数据类型
- 验证输入
- 使用正则表达式验证输入
- 验证输入和getline()函数
- 函数验证输入c++简单
- C++如何验证输入以与重载>>运算符一起使用
- 在Windows c++应用程序中验证输入UTF-8序列
- 抵押计算器验证输入错误
- 验证输入的好方法是什么?