检查用户输入是否为数字

时间:2014-05-23 09:26:30

标签: c

我得到的代码应该检查用户输入是否为数字,但无论是否为数字,都会打印“false”。

if (isdigit(atoi(argv[1])))
{
   printf("true");
}
else
{
   print("false");
}

这就是我运行它的方式:

./ filename 2 3

2 个答案:

答案 0 :(得分:1)

你混淆了不同的功能。

atoi()(ASCII到整数)将字符串转换为int。但是isdigit()会检查单个字符,而不是int

您只需要isdigit((unsigned int) argv[1][0])来检查字符串的第一个字符。

如果您想确保没有更多字符,请同时验证:

bool single_digit(const char *s)
{
  return s != NULL && isdigit((unsigned int) *s) && s[1] == '\0';
}

然后致电

single_digit(argv[1]);

答案 1 :(得分:-1)

您不需要atoi。而是将其强制转换为整数。

if (isdigit((int)argv[1]))
{
   printf("true");
}
else
{
   print("false");
}

另外,像这样运行:./filename 3(即文件名后只有一位数,因为第二个将被忽略)。

最好的事情:检查man page isdigit及其他类似方法:http://linux.die.net/man/3/isdigit