【发布时间】:2016-06-01 11:44:27
【问题描述】:
我不知道如何检查用户的输入是否是字母。我希望程序:
- 读取用户输入
- 检查是否是字母
- 再次输出名称
我尝试使用isdigit 和isalpha,但无法正常工作。
//checking if name is valid and not a number
int nameCheck(char enteredName)
{
//if the name is alphabetic
/* return and output it */
//else
/* let the user enter it again */
}
//user enters the name
int nameEntering()
{
cout << "please enter your Name.\n";
char enteredName;
cin >> enteredName;
nameCheck(enteredName);
return 0;
}
int main()
{
char enteredName;
enteredName = nameEntering();
cout << "Have a nice day " << enteredName << "!\n";
return 0;
}
这是我的旧解决方案,根本不起作用。我在另一个网站上找到了它并将其用作“模板”。
int nameCheck(char enteredName)
{
int i = 0;
char str[] = {enteredName};
while (str[i])
{
if (isalpha(str[i])) printf("character %c is alphabetic\n", str[i]);
else
cout << "Enter your name again without using numbers or other special characters, please!\n";
nameEntering();
i++;
}
return enteredName;
}
【问题讨论】:
-
您需要对“名称输入”部分进行循环,具体取决于 nameCheck(使用返回类型 bool)函数的输出。在伪代码中类似于
while(!nameCheck(name)) { name = promptName() }。 -
名称是
collection of words。因此,请使用std::string而不是char。此外,如果您希望在名称中使用space,请使用getline()。 -
对不起,我说过我是新来的,第一次积极使用这个网站。
-
我将旧解决方案添加到帖子@Andrew
标签: c++ input char alphabetic