函数中的isdigit()

时间:2014-01-11 14:33:44

标签: c function parameters

我有一个函数,它接受用户的整数输入。

所以我有:

scanf("%d, &x);

然后,功能:

test(int x);

在测试()中,我想检查输入是数字还是字符,所以我尝试了:

if (isdigit(x))
    // piece of code
    printf("Done!\n");
else
    printf("Bye!\n");

然而,isdigit()似乎没有工作,因为程序输出“再见!”立即。可能是什么问题?

感谢。

5 个答案:

答案 0 :(得分:3)

你传递整数而不是char!

isdigit(x)检查x是否为数字字符,例如'0''1'但不是01你传递的是什么。

表现得像:

 isdigit('h')  returns 0
 isdigit('1')  returns 1      
 isdigit(1)  returns 0    // your are passing this

阅读manual

  

标准C库函数ctype(3C)

     

isdigit()测试任何十进制数字

答案 1 :(得分:1)

isdigit测试一个角色:

isdigit('5') == true;
isdigit(5) == false;

答案 2 :(得分:1)

删除分号:

if (isdigit(x)); // <=== 

由于分号,如果是数字,则执行空语句。

答案 3 :(得分:1)

C库函数void isdigit(int c )检查传递的字符是否为十进制数字字符。

如果c是十进制数字,则isdigit() function返回非零值,否则为0。输入参数为int,应用程序应确保的值是可表示为的字符unsigned char或等于宏EOF的值。即 确保您的值用单引号括起来。

在if语句之后,您似乎也有一个;,它会改变预期的控制流。

char x;  
scanf(" %c", &x); 

if (isdigit(x)) 
  printf("Done!\n");
else 
  printf("Bye!\n");

答案 4 :(得分:0)

怀疑OP想要阅读char

char x;  // new type
scanf(" %c", &x); // new format specifier

if (isdigit(x))  // remove ;
  // piece of code
  printf("Done!\n");
else if (isalpha(x)) // added test @Joachim Pileborg
  printf("Is a alpha!\n");
else 
  printf("Bye!\n");