首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >区分如果int或char / string与用户输入

问区分如果int或char / string与用户输入
EN

Stack Overflow用户
提问于 2015-08-13 00:03:01
回答 3查看 1.2K关注 0票数 1

我正在试着从用户那里读取输入。我想区分提供的输入是int、char还是string。

我试着用scanf_s来处理这个问题,但这不太有效。是否有一种方法可以从用户那里获取输入,并判断这是整数、字符还是字符串?

这就是我到目前为止所拥有的。

代码语言:javascript
复制
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;
    }
  }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-08-13 00:34:17

首先要做的是不使用整数指针,而是使用char指针。这使得一次查看整个输入更容易一些。所以您的代码应该如下所示:

代码语言:javascript
复制
void ReadInteger(char* value, bool isX) { ... }

下一部分取决于你想要做什么,要么你想把整行读成一个输入,要么读一些东西,直到你遇到一个空格字符。我假设后一个,这又回到了你的问题。

如何判断你是否刚刚读到了一个字符

代码语言:javascript
复制
int isChar(char *value) {
    return value != NULL && strlen(value) == 1 && isalpha(value[0]);
}

如何判断是否刚刚读取整数

代码语言:javascript
复制
int isInteger(char *value) {
    int ans = 0;
    if (value != NULL && strlen(value) > 1) {
        while (*value && isdigit(*value)) {
            value++;
        }
        ans = (value == NULL);
    }
    ans;
}

如何判断您是否刚刚读取字符串

我觉得很懒,所以这样就行了:

代码语言:javascript
复制
int isString(char *value) {
    return !isChar(value) && !isInteger(value);
}

注意,整数检查方法告诉用户是否只输入数字,但不告诉您该数字是否适合32位整数。如果要实现此效果,可以轻松地修改代码以实现此。

票数 1
EN

Stack Overflow用户

发布于 2015-08-13 00:05:23

您可以使用fgets将输入读入字符数组,然后使用sscanf解析输入。您可以查看字符数组来查看它是什么类型的数据。如果您提供了输入的示例,我可以向您展示代码。

票数 0
EN

Stack Overflow用户

发布于 2015-08-13 00:05:39

这会有帮助的。你可以操纵代码。

代码语言:javascript
复制
int myNum;
char myTerm;
if(scanf("%d%c", &myNum, &myTerm) != 2 || myTerm != '\n')
    printf("failure\n");
else
    printf("valid integer followed by enter key\n");

原因: myNum总是包含一个整数,因为它是一个int

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31977398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档