【发布时间】:2014-05-11 06:59:25
【问题描述】:
我正在用 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]='\0';
printf("%s \n", word1);
}
}
return;
}
【问题讨论】:
-
您可以使用
isalpha(w1[i]),如果需要,可以根据您的要求与&& islower(w1[i])结合使用。您可以在#include <cctype>中找到这两个函数。