C 語言字符測試函數的用法舉例 - 2016.01.01

   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]);
    }


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章