C语言 isdigit()

这个函数是非数字返回true吗?、
2024-11-08 20:04:38
推荐回答(5个)
回答(1):

    isdigit是头文件ctype.h中声明的一个函数。原型为:

int isdigit(int c);

作用:

    判断c指定的字符是否为数字字符,即'0'-'9',如果是,则返回1;否则返回0。

    isdigit函数的实现也比较简单,这样就可以:

int isdigit(int c)
{
    return (c >= '0' && c <= '9');
}

回答(2):

#include 
#include 
#define LINELEN 80
#define MAXMUNLEN 20
int main(int argc, char *argv[])
{
    char buffer[LINELEN];
    char number[MAXMUNLEN];//记录有效数据 
    char *fgets_rtn = NULL;
    char *num_ptr=number;
    int ch,
    isnum=0,//是否有效标记 
    sig=0,//正负号标记 
    num=0,//数字标记 
    poin=0;//小数点标记 
    while ((fgets_rtn=fgets(buffer, LINELEN, stdin))!=NULL)
    {
        if (*fgets_rtn=='\n')break;//空行退出
        while ((ch=*fgets_rtn++)!='\0')//检测每个字符
        {
            switch (ch)
            {
            case '\n':ch='\0';break;//是有效数据跳过回车符结束 
            case '+':
            case '-':
                if (sig) 
                    isnum=0;//下同无效数据
                else
                {
                    if(num||poin)
                        isnum=0;
                   else//未标记 ,下同 
                  {
                       sig++;
                       isnum++;              
                   }
                }
                break;
            case '.':
                if(poin)
                    isnum=0;
                else
                {
                    poin++;
                   isnum++;
                }
                break;
            default:
                if (isdigit(ch))
                {
                    num++;
                    isnum++;
                }
                else if (isspace(ch))
                {
                    if(isnum)
                       isnum=0;
                }
                else
                {
                    num++;  //设置无效数据 
                    isnum=0;
                }                    
                break;
            }//end switch
            
            if (isnum)//如果是有效字符,写入number数据 
                *num_ptr++=ch;
            else
            {
                if(sig||poin||num)
                {
                    *num_ptr='\0';
                    break;//结束本次检测
                }
            }
        }//end while
        
        if (isnum&&num)//判断 
            if (poin)
                printf("%s为有效double型!\n",number);
            else
                printf("%s为有效整型!\n",number);
        else
        {
            //printf("%s为无效数据!\n",buffer);//会输出回车符,不完善。 
            fgets_rtn=buffer;
            while((ch=*fgets_rtn++)!='\n'&&ch!='\0')
                putchar(ch);//如果不能用putchar用://printf("%c",ch); 
            printf("为无效数据!\n");
        }
  
        isnum=sig=num=poin=0;//置0
        num_ptr=number;
        *num_ptr='\0';
    }//end while
    
    return 0;
}

回答(3):

 //是数字  返回true   否则返回  0 

头文件
#include
函数定义 
int isdigit(char c)
函数说明 
检查参数c是否为阿拉伯数字0到9。
返回值 
若参数c为阿拉伯数字,则返回TRUE,否则返回NULL(0)。

回答(4):

bool isdigit(char c)
{
if(c>='0' && c<='9') return true;
else return false;
}

代码原理应该更接近于这个 而不是返回int(虽然没有太大问题)或者传入一个int参数(这个是重点),就是判断传入的字符是否是数字字符(0~9)

回答(5):

#include #include #define LINELEN 80#define MAXMUNLEN 20int main(int argc, char *argv[]){ char buffer[LINELEN]; char number[MAXMUNLEN];//记录有效数据 char *fgets_rtn = NULL; char *num_ptr=number; int ch, isnum=0,//是否有效标记 sig=0,//正负号标记 num=0,//数字标记 poin=0;//小数点标记 while ((fgets_rtn=fgets(buffer, LINELEN, stdin))!=NULL) { if (*fgets_rtn=='\n')break;//空行退出 while ((ch=*fgets_rtn++)!='\0')//检测每个字符 { switch (ch) { case '\n':ch='\0';break;//是有效数据跳过回车符结束 case '+': case '-': if (sig) isnum=0;//下同无效数据 else { if(num||poin) isnum=0; else//未标记 ,下同 { sig++; isnum++; } } break; case '.': if(poin) isnum=0; else { poin++; isnum++; } break; default: if (isdigit(ch)) { num++; isnum++; } else if (isspace(ch)) { if(isnum) isnum=0; } else { num++; //设置无效数据 isnum=0; } break; }//end switch if (isnum)//如果是有效字符,写入number数据 *num_ptr++=ch; else { if(sig||poin||num) { *num_ptr='\0'; break;//结束本次检测 } } }//end while if (isnum&&num)//判断 if (poin) printf("%s为有效double型!\n",number); else printf("%s为有效整型!\n",number); else { //printf("%s为无效数据!\n",buffer);//会输出回车符,不完善。 fgets_rtn=buffer; while((ch=*fgets_rtn++)!='\n'&&ch!='\0') putchar(ch);//如果不能用putchar用://printf("%c",ch); printf("为无效数据!\n"); } isnum=sig=num=poin=0;//置0 num_ptr=number; *num_ptr='\0'; }//end while return 0;}