注意:如下函数都包含在ctype.h头文件中git
1.isalpha函数 用来判断获得的参数是否是字母小程序
1 #include<stdio.h> 2 #include<ctype.h> 3 4 int main () 5 { 6 /* 7 isalpha函数用来检测数值是否为大小写字母 返回值分为三种 8 1.大写字母,返回值为1 9 2.小写字母,返回值为2 10 3.不是字母,返回值为0 11 */ 12 char c ; 13 scanf("%c",&c); 14 int State; 15 State=isalpha(c);//大写字母返回1 小写字母返回2 16 // printf("%d",State); 17 18 if(State==1) 19 { 20 printf("输入的是大写字母\n"); 21 } 22 else if (State==2) 23 { 24 printf("输入的是小写字母\n"); 25 } 26 else { 27 printf("sb你输入的不是字母\n"); 28 } 29 30 return 0; 31 }
由于isalpha只能判断单个字符,感受不是那么好用的样子 ,百度了一下它的相关资料,在百度百科词条中发现了一个利用这个函数来写的一个判断输入字母个数的程序 以下:数组
1 #include<ctype.h> 2 #include<stdio.h> 3 int main(void) 4 { 5 char ch; 6 int total; 7 total=0;//赋值 8 /*统计字母块*/ 9 do 10 { 11 ch=getchar(); 12 if(isalpha(ch)!=0) 13 ++total; 14 }while(ch!='.');//结束符号为. 15 printf("The total of letters is:%d\n",total); 16 return 0; 17 } 18 /*运行结果*/ 19 输入:123456我am侯云江. 20 输出:The total of letters is:2
下面的代码,是我对上面的代码,作过了一些小的改动,好比 我将结束符号 改成换行符 这样更人性化了一些 不用输入 "." 来做为 输入的结束符号 由于\n 换行符,表示将键盘缓冲区的数据发送到程序中 也就是一次输入的结束 getchar();也会接受这个换行符 它们之间是不会影响的 在一次输入结束的同时 getchar()也会获得 \n ch=\n 后 通过while判断后 条件不知足 就能够退出循环了函数
1 # include <stdio.h> 2 # include <ctype.h> 3 4 int main () 5 { 6 char ch; 7 int total=0; //初始化 8 9 //统计输入字母数量 10 do{ 11 ch=getchar(); 12 if(isalpha(ch)!=0) 13 { 14 total=total+1; 15 } 16 } while(ch!='\n'); //设置字符串的结束符号为 \n 可任意设置 17 printf("共输入了%d个字母\n",total); 18 return 0; 19 } 20 /* 21 1.用getchar() 从键盘中读入一个字符 到ch变量中 22 2.用if语句来判断isalpha函数返回的值 不为0的话 则是字符(大小写都有可能)total的值加1 23 3.判断n+1次ch的值是否 为换行符 若是是话 就终止循环 结束程序 24 25 为何是n+1次呢? 26 我输入a而后回车 27 a传到ch中 通过isalpha判断后返回值为非0 条件成立 执行if中语句 total=1 28 判断ch值不为\n 29 \n 传入到ch中 通过isalpha函数判断为0 条件不成立 不执行if中语句 total值不变 30 while判断 ch的值== \n 条件不成立 终止循环 31 32 */
下面的代码是我作的测试,内容是再输入不少字符的时候 最终ch的值会是多少测试
1 # include <stdio.h> 2 # include <ctype.h> 3 4 int main () 5 6 { 7 char a,b,c; 8 do{ 9 10 a=getchar(); 11 12 }while(a!='.'); 13 printf("%c",a); 14 15 return 0; 16 }
运行结果:spa
因而可知 在do while循环中 你输入的最后一个字符 就为a或者ch 变量中的值 我输入的值是. 换行符也是同样 只是 换行符还有一种的一种做用就是结束输入 将键盘缓冲区中的数据放到程序中 在这里例子中也就是发送到a变量中 上个例子就是发送到ch变量中 code
2.isdigit函数 判断获得的参数是否为阿拉伯数字0-9blog
函数说明
|
检查参数c是否为阿拉伯数字0到9。
|
返回值
|
若参数c为阿拉伯数字,则返回TRUE,不然返回NULL(0)。
|
相关代码的联系 用isdigit函数找出一串字符串中的数字 用循环的方式 遍历数组中的每一个元素 将每一个元素都做为isdigit的参数字符串
1 #include<stdio.h> 2 #include<ctype.h> 3 int main() 4 { 5 char str[]="123@#FDsP[e?"; 6 int i; 7 8 9 10 /* 11 0.断str[x]中保存的值 不是结束符号的话 就一直循环 12 1.用if判断isdigit中的返回值 若是是非0 则条件成立 执行if语句中内容 13 2.打印对应的str[x]字符数组中的值 14 15 16 */ 17 for(i=0;str[i]!='\0';i++) 18 { 19 if( isdigit (str[i]) ) 20 printf( "%c is an digit character\n",str[i] ); 21 } 22 }
3.isalnum函数 传入的参数若是是字符(包含0-9阿拉伯数字+大小写字母)就返回true(!0) 不然返回 0 主要用来判断 我猜是用来判断传入的特殊符号get
结合前三个函数作的一个小程序 从键盘中读入字符串 输入字符串中字母个数(大小写字母个数)和数字个数和特殊符号个数
1 #include<stdio.h> 2 #include<ctype.h> 3 4 //从键盘中读入字符串 输入字符串中字母个数(大小写字母个数)和数字个数和特殊符号个数 5 int main () 6 { 7 char name[100]; 8 gets(name); //得到字符存入name字符数组中 9 int i,dch,xch,digit,tch; 10 dch=0; 11 xch=0; 12 tch=0; 13 digit=0; 14 for(i=0;name[i]!=0;i++) 15 { 16 if(isalpha(name[i])==1) //返回值为1 为大写字母 大写字母+1 17 { 18 dch=dch+1; 19 } 20 if(isalpha(name[i])==2) //返回值为2 为小写字母 小写字母+1 21 { 22 xch=xch+1; 23 } 24 if(isalnum(name[i])==0) //返回值为0 证实值为特殊符号 不包含大小写字母和数字 25 { 26 tch=tch+1; 27 } 28 29 if(isdigit(name[i])) 30 { 31 digit=digit+1; 32 } 33 34 } 35 printf("你输入的字符串中有\n%d大写字母\n%d小写字母\n%d个特殊符号\n%d个数字",dch,xch,tch,digit); 36 37 38 39 return 0; 40 }