用户输入 - C(不允许使用某些字符)



我有一个C程序,用户将在命令行中输入整数或双精度作为输入。允许负数,但是当用户输入这样的东西时,我遇到了问题:

1-1

它只是被解析为一个。我创建了一个函数来测试用户输入是否为有效数字,但我不确定如何捕获这样的实例,或者像 1+1、1)2 等输入也是如此。

这是我创建的函数:

int check_number(char *userInput) {
int i;
//check each character
for (i = 0; userInput[i] != ''; i++){
    if (isalpha(userInput[i])){
        printf("Invalid input.n");
        return -1;
    }
}       
return 0;
}

我应该怎么做才能在用户输入过程中不允许任何其他随机字符(除了字母,因为这些字符已经用 isalpha 进行了测试)?

基本上,

您希望第一个字符是减号或数字(也许是句点),所有后续字符都应该是数字或句点。但您可能还需要计算周期以确保只有一个。如果你也想接受科学记数法,你也需要处理这个问题。

检查

不是 isalpha 是错误的方法,您应该检查允许的字符。

基本上是这样的:

if (*userInput != '-' && !isdigit(*userInput))
  return -1;
int periods = 0;
while (*++userInput != 0) {
  if (*userInput == '.') {
    if (periods >= 1)
      return -1;
    ++periods;
    continue;
  }
  if (!isdigit(*userInput))
    return -1;
}
return 0;
if (isdigit(userInput[i]) || userInput[i]=='.') {
  printf("Valid input.n");
}
else return -1;

相关内容

  • 没有找到相关文章

最新更新