c语言isdigit函数用法?
#include <stdio.h> #include <ctype.h> #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; }Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有