为什么isalpha()不能用于小写字母?

时间:2014-05-08 13:59:19

标签: c

在下面的代码中,如果字符是大写字母,则打印第一个语句,但是对于小写字母,则打印第二个语句。这是什么原因?我正在使用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;
}

2 个答案:

答案 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)可解决此问题。