2016年的第一天祝大家元旦快樂!由於今天有考試,昨天晚上寫的匆忙,只是簡簡單單地寫出了C語言中字符測試函數,卻沒有詳細講解其使用。接下來讓我們切身感受一下它的存在。首先我需要補充的一點是這些函數的本質是宏定義,並不是一種方法。至於宏定義的概念,大概就是說在程序進行預編譯的時候,進行代碼的加載、替換,並不佔用內存空間。假設我們用define定義了一個Man 代表 “ghn” ,則我們進行預編譯的時候所有的Man都將被“ghn”原封不動的替換。同樣如果Man代指一段代碼,也是同樣的效果。
直接上代碼吧,需要的頭文件爲 <ctype.h> 、<string.h> 、<stdio.h> ,當然如果你需要調用system("pause")穩定屏幕的話,還是需要<stdlib.h>頭文件的。
(1)判斷是否爲十六進制
char a[] = "0149ACEFGH" ;
for(int i=0 ; i < strlen(a) ; i++)
{
if( isxdigit(a[i]) )
printf("a[%d] -> %c 是十六進制\n",i,a[i]);
else
printf("a[%d] -> %c 不是十六進制\n",i,a[i]);
}
(2)判斷是否是數字
char b[] = "012adSD" ;
for(int i=0 ; i < strlen(b) ; i++)
{
if( isdigit(b[i]) )
printf("c[%d] -> %c 是數字\n",i,b[i]);
else
printf("c[%d] -> %c 不是數字\n",i,b[i]);
}
(3)判斷是否爲大寫
char c[] = "asdGHG012" ;
for(int i=0 ; i < strlen(c) ; i++)
{
if( isupper(c[i]) )
printf("c[%d] -> %c 是大寫\n",i,c[i]);
else
printf("c[%d] -> %c 不是大寫\n",i,c[i]);
}
(4)判斷是否爲小寫
for(int i=0 ; i < strlen(c) ; i++)
{
if( islower(c[i]) )
printf("c[%d] -> %c 是小寫\n",i,c[i]);
else
printf("c[%d] -> %c 不是小寫\n",i,c[i]);
}
(5)判斷是否爲英文
char h[] = "01 A &i$et@" ;
for(int i=0 ; i < strlen(h) ; i++)
{
if( isalpha(f[i]) )
printf("h[%d] -> %c 是英文字符\n",i,h[i]);
else
printf("h[%d] -> %c 不是英文字符\n",i,h[i]);
}
(6)判斷是否爲英文或數字
char d[] = "0149AaGe@!* &/t" ;
for(int i=0 ; i < strlen(d) ; i++)
{
if( isalnum(d[i]) )
printf("d[%d] -> %c 是英文字母或者數字\n",i,d[i]);
else
printf("d[%d] -> %c 不是英文字母且數字\n",i,d[i]);
}
(7)判斷是否爲ascii碼
for(int i=120 ; i < 130 ; i++)
{
if( isascii(c[i]) )
printf("%d 所對應的字符 %c ,是 ascii \n",i,i);
else
printf("%d 所對應的字符,不是 ascii \n",i);
}
(8)判斷是否爲特殊字符或者標點符號
char g[] = "Hello , World!!!@@!*&" ;
for(int i=0 ; i < strlen(g) ; i++)
{
if( ispunct(g[i]) )
printf("g[%d] -> %c 是特殊符號或者標點符號\n",i,g[i]);
else
printf("g[%d] -> %c 不是特殊符號和標點符號\n",i,g[i]);
}
(9)判斷是否爲可打印字符
for(int i=0 ; i < 50 ; i++)
{
if( isprint(c[i]) )
printf("%d 所對應的字符 -> %c 是可打印字符\n",i,i);
else
printf("%d 所對應的字符,不是可打印字符\n",i);
}
(10)判讀是否爲控制字符
for(int i=0 ; i < 50 ; i++)
{
if( iscntrl(c[i]) )
printf("%d 所對應的字符,是控制字符\n",i);
else
printf("%d 所對應的字符,不是控制字符\n",i);
}
(11)判斷是否爲空格以外的可打印字符
char f[] = "01 A &i$et@" ;
for(int i=0 ; i < strlen(f) ; i++)
{
if( isgraph(f[i]) )
printf("f[%d] -> %c 是除了空格以外的可打印字符\n",i,f[i]);
else
printf("f[%d] -> %c 不是除了空格以外的可打印字符\n",i,f[i]);
}
(12)判斷是否爲空格
char e[] = "0 1 A e t" ;
for(int i=0 ; i < strlen(e) ; i++)
{
if( isspace(e[i]) )
printf("e[%d] -> %c 是空格\n",i,e[i]);
else
printf("e[%d] -> %c 不是空格\n",i,e[i]);
}