首页 > 解决方案 > 如何在 C 中使用 isdigit 函数

问题描述

我是一个完整的初学者,正在学习 cs50 课程,我需要检查用户的参数是否是数字。

这是代码:

#include <stdio.h>
#include <cs50.h>
#include <ctype.h>

int main(void)
{
  int i = 1;
  if (isdigit(i) == 1)
    {
      printf("i is a digit");
    }
  else if (isdigit(i) == 0)
    {
      printf("i is not a digit");
    }
return 0;
}

当我运行这段代码时,我基本上得到了我应该得到的相反结果。当 i 是一个数字时,它会打印出“i is not a number”,反之亦然。我究竟做错了什么?我认为 isdigit 如果是数字则返回非零值,否则返回 0。基本上1为真,0为假。这不正确吗?非常感谢,谢谢!

标签: cfunctioncs50

解决方案


我究竟做错了什么?

“isdigit 函数测试任何十进制数字字符”。 i值为1不是数字字符。

试试i = '1';。然后i将具有数字字符的值。

代码正在错误地测试返回值。@tadmanis...()返回 0 或非零。

// if (isdigit(i) == 1)
if (isdigit(i))

注意:is...(int ch)函数只chunsigned char范围和有效EOF


推荐阅读