• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            Beginning to 編程

            VC++ 方面編程文章

             

            轉換大小寫C函數

            ?

            Richard zeng? 3/19/2006 10:50:36 AM

            ?

            這幾天又把以前的 C 課程翻了出來 , 因為自己對 C 的指針和數組不是很 DEV.

            模擬 C 庫函數中的轉化大小寫函數 .

            ?

            // 轉換成大寫 , 函數參數為字符數組

            // 利用字符串數組的結尾都是 \0

            void ToUpper(chars[])

            {

            ?????? int i=0;

            ?????? while(s[i++]!='\0' )

            ?????? {

            ????????????? // 判斷是否是小寫字母

            ????????????? if(s[i]>='a' && s[i]<='z' )

            ???????????????????? s[i] -= 32;???? // 小寫字母比大寫字母的 ASCII 32

            ?????? }

            }

            ?

            // 轉換成大寫 , 函數參數為字符指針

            void ToUpperPtr(char* s)

            {

            ?????? while(*s != '\0')

            ?????? {

            // 判斷是否是小寫字母

            ????????????? if(*s >='a' && *s <='z')

            ???????????????????? *s -= 32; ???? // 小寫字母比大寫字母的 ASCII 32

            ????????????? s++; // 指針的地址 ++

            ?????? }

            }

            posted on 2006-03-19 10:56 Beginning to 編程 閱讀(5851) 評論(5)  編輯 收藏 引用 所屬分類: 關鍵代碼

            評論

            # re: 轉換大小寫C函數 2006-03-19 17:13 可冰

            /**************************************/
            // 利用字符串數組的結尾都是 \0
            void ToUpper(chars[])
            {
                int i=0;
                while(s[i++]!='\0' )
                { ?。蓿蓿蓿蓿?
            /**************************************/
            你這個i自加的可不是時候啊

            另外,其實只要一條語句就可實現轉換的.
            while( s[i] != '\0' )
              s[i++] &= 0xDF; // 11011111B
            /*或者*/
            while( *s != '\0' )
              *s++ &= 0xDF;  回復  更多評論   

            # re: 轉換大小寫C函數 2006-03-19 17:19 可冰

            還有一種代碼密度更高的寫法:
            (但不推薦使用,可讀性太差了!)
            while( *s && *s++ &= 0xDF )
               ??;
            其實對于指針的話還應該加上一條判斷:
            while( s && *s && *s++ &= 0xDF )
               ?。?nbsp; 回復  更多評論   

            # re: 轉換大小寫C函數 2006-04-04 10:31 編程之道

            為什么要和0xDF與?   回復  更多評論   

            # re: 轉換大小寫C函數 2006-04-04 11:01 編程之道

            大概明白了,寫一下
            a 0110 0001
            A 0100 0001
            只有第6位是不一樣的,所以,如果想把小寫轉換成大寫,只需要將第6位改成0,也就是-32。這樣直接和
            1101 1111
            進行與操作,這樣就保證了其他位不變,將第6位變成了0
            同樣,如果要將大寫轉換成小寫,需要將第6為改為1。
            直接和
            0010 0000
            進行或運算,就可以完成。
            還有一個比較更簡單的是直接和
            0010 0000
            進行異或運算,就ok了  回復  更多評論   

            # re: 轉換大小寫C函數 2009-06-23 16:01 u2u

            @可冰
            這個有bug,如果字符串中包含數字呢?
            我的實現:
            while(*s && ((*s < 0x61 || *s > 0x7A) || (*s &= 0xDF)) && s++);  回復  更多評論   

            導航

            統計

            常用鏈接

            留言簿(4)

            隨筆分類

            隨筆檔案

            文章檔案

            相冊

            BlogDev

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            av无码久久久久不卡免费网站| 久久中文娱乐网| 久久亚洲国产成人精品性色| av无码久久久久不卡免费网站| 18岁日韩内射颜射午夜久久成人| 精品国产91久久久久久久a | 色天使久久综合网天天| 99久久国产宗和精品1上映| 国产精品99久久99久久久| 一本综合久久国产二区| 久久综合久久久| 久久永久免费人妻精品下载| 亚洲国产精品久久久久| 性色欲网站人妻丰满中文久久不卡| 欧美伊香蕉久久综合类网站| 久久精品国产99久久久古代| 7国产欧美日韩综合天堂中文久久久久 | 国内精品久久久久影院薰衣草 | 精品久久一区二区| 精品久久久无码21p发布| 久久本道久久综合伊人| 好属妞这里只有精品久久| 精产国品久久一二三产区区别| 激情五月综合综合久久69| 成人久久精品一区二区三区| 少妇高潮惨叫久久久久久| 久久天天婷婷五月俺也去| 久久精品一区二区三区中文字幕 | 久久久久久噜噜精品免费直播| 精品少妇人妻av无码久久| 久久天天躁狠狠躁夜夜躁2O2O| 久久亚洲AV成人无码| 国产精品久久婷婷六月丁香| 久久精品国产亚洲精品| 久久国产一片免费观看| 国产激情久久久久影院老熟女| yellow中文字幕久久网| 国内精品久久久久影院网站| 久久久噜噜噜久久| 亚洲国产天堂久久综合| 波多野结衣AV无码久久一区|