在下面的代码中,如果字符是大写字母,则打印第一个语句,但是对于小写字母,则打印第二个语句。这是什么原因?我正在使用dev c ++来编译我的代码。
#include<stdio.h>
#include<conio.h>
#include<ctype.h>
int main()
{
char c;
printf("enter a character\n");
scanf("%c",&c);
int i;
i=isalpha(c);
if(i==1)
printf("entered character is an alphabet\n");
else
printf("entered character is not an alphabet\n");
getch();
return 0;
}
答案 0 :(得分:6)
isalpha
可以返回字母字符的任何非零值,而不仅仅是1
。因此,将if(i==1)
更改为if(i)
。
答案 1 :(得分:5)
标准不要求isalpha
返回零或一。它要求它返回零或非零。任何非零值都表示true
:( documentation)
返回值
如果字符是字母字符,则为非零值(true),否则为0(false)。
例如,ideone上安装的实现返回1024(demo)。
将if(i==1)
代码更改为if(i!=0)
甚至if(i)
可解决此问题。