程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C >> 關於C >> 一起talk C栗子吧(第一百六十六回:C語言實例

一起talk C栗子吧(第一百六十六回:C語言實例

編輯:關於C

各位看官們,大家好,上一回中咱們說的是C語言中常量的例子,這一回咱們說的例子是:大小寫字符轉換。閒話休提,言歸正轉。讓我們一起talk C栗子吧!


看官們,在程序中經常會用到英文字符,有時候需要把英文字符進行大小寫轉換。如何進行轉換呢?接下來我們一起看看具體的轉換方法。

大家都知道每個字符都有相應的ASIIC碼,如果把一個字符的ASIIC碼加上一個數值就變成了另外一個字符的ASIIC碼。比如給字符a的ASIIC碼加上1後就成了字符字符b的ASIIC碼。基於這個原理,我們可以在小寫字符的ASIIC碼加上一個數值轉換成該字符大寫形式時的ASIIC碼。不過還有個問題,那就是加上的數值是多少呢?其實大家可以從ASIIC碼表中發現規律,這個數值是固定的,而且我們可以計算出來,計算方法就是:"a-A"

另外,在ASIIC碼表中,小寫字符的ASIIC碼比大寫字符的要大,因此,把小寫字符轉換為大小字符時,需要減去一個數值。反之,把大寫字符轉換為小寫字符時就加上一個數值。下面我們通過具體的代碼來說明:

    char val_lower = 'a';                     //定義一個小寫字符a
    char val_upper = val_lower - ('a'-'A');   //把小寫字符a轉換為大寫字符A

    printf("the lower is %c ,the upper is %c \n",val_lower,val_upper);

大家從代碼中可以看到,把小寫字符轉換為大寫字符的方法就是我們剛才介紹過的方法。此時,程序的輸出結果如下:

the lower is a ,the upper is A 

從運行結果中可以看到小寫字符轉換成了大寫字符。

有時候為了轉換方便,可以定義一個宏來進行轉換,下面是宏的定義:

    #define TOUPPER(c) ((c)-('a'-'A'))  //把小寫字符轉換為大寫字符
    #define TOLOWER(c) ((c)+('a'-'A'))  //把大寫字符轉換為小寫字符

    printf("the lower is %c ,the upper is %c \n",val_lower,TOUPPER(val_lower));
    printf("the upper is %c ,the lower is %c \n",val_upper,TOLOWER(val_upper));

下面是此時程序的運行結果:

the lower is a ,the upper is A 
the upper is A ,the lower is a 

其實,C標准庫也提供了大小寫字符的轉換函數,它們位於文件中,其函數原型如下:

   int toupper(int c);   //把小寫字符轉換為大寫字符
   int tolower(int c);   //把大寫字符轉換為小寫字符

這兩個函數的使用方法和剛才我們代碼中宏的使用方法類似,因此就不做詳細說明了。不過它們具有很好的可移植性。

在標准庫中這兩個函數是通過一個轉換表實現的,表中包含了ASIIC碼以外的內容。我們的轉換方法是建立在字符用ASIIC碼表示的基礎上,因此,如果使用了其它方式表示字符,那麼我們定義的宏就會失效。鑒於這個原因,我們推薦大家使用標准庫提供的大小寫字符轉換函數。

看官們,這裡就不寫代碼了,完整的代碼放到了我的資源中,大家可以下載使用。

下面是程序的運行結果,請大家參考:

init value : the lower is a ,the upper is A 
the lower is a ,the upper is A 
the upper is A ,the lower is a 
the lower is a ,the upper is A 
the upper is A ,the lower is a 

各位看官,關於大小寫字符轉換的例子咱們就說到這裡。欲知後面還有什麼例子,且聽下回分解。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved