我正在尝试读取用户的输入。 我想区分提供的输入是 int、char 还是 string。
我尝试用 scanf_s 解决这个问题,但这并不奏效。有没有办法从用户那里获取输入,并判断这是一个整数、字符还是字符串?
这就是我目前所拥有的。
void CheckIfInt()
{
char returnValue = 0;
//loop until we are given a valid input
while(true)
{
scanf_s("%c", &returnValue);
scanf_s("%C");
if(isdigit(returnValue))
{
//Do something
break;
}
else if(returnValue == 'a')
{
//Do something else
break;
}
}
}
最佳答案
您应该做的第一件事是不要使用整数指针,而是使用字符指针。这使得一次一个字节地查看整个输入变得更容易。所以你的代码应该是这样的:
void ReadInteger(char* value, bool isX) { ... }
下一部分取决于您要做什么,您是想读取整行作为一个输入还是读取一些内容直到遇到空格字符。我会假设后者,这又回到了你的问题。
如何判断你是否只是读取了一个字符
int isChar(char *value) {
return value != NULL && strlen(value) == 1 && isalpha(value[0]);
}
如何判断你是否只是读取了一个整数
int isInteger(char *value) {
int ans = 0;
if (value != NULL && strlen(value) > 1) {
while (*value && isdigit(*value)) {
value++;
}
ans = (value == NULL);
}
ans;
}
如何判断你是否只是读取了一个字符串
我觉得很懒,所以这样做:
int isString(char *value) {
return !isChar(value) && !isInteger(value);
}
请注意,整数检查方法会判断用户是否只输入了数字,但不会告诉您该数字是否适合 32 位整数。如果你想要这个效果,你可以很容易地修改代码来实现这个
关于c - 区分用户输入是 int 还是 char/string,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31977398/