我有一个函数,它接受用户的整数输入。
所以我有:
scanf("%d, &x);
然后,功能:
test(int x);
在测试()中,我想检查输入是数字还是字符,所以我尝试了:
if (isdigit(x))
// piece of code
printf("Done!\n");
else
printf("Bye!\n");
然而,isdigit()似乎没有工作,因为程序输出“再见!”立即。可能是什么问题?
感谢。
答案 0 :(得分:3)
你传递整数而不是char!
isdigit(x)
检查x
是否为数字字符,例如'0'
,'1'
但不是0
,1
你传递的是什么。
表现得像:
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");