注意:如下函數都包含在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 }