• <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++ 方面編程文章

             

            轉(zhuǎn)換大小寫C函數(shù)

            ?

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

            ?

            這幾天又把以前的 C 課程翻了出來 , 因?yàn)樽约簩?duì) C 的指針和數(shù)組不是很 DEV.

            模擬 C 庫函數(shù)中的轉(zhuǎn)化大小寫函數(shù) .

            ?

            // 轉(zhuǎn)換成大寫 , 函數(shù)參數(shù)為字符數(shù)組

            // 利用字符串?dāng)?shù)組的結(jié)尾都是 \0

            void ToUpper(chars[])

            {

            ?????? int i=0;

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

            ?????? {

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

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

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

            ?????? }

            }

            ?

            // 轉(zhuǎn)換成大寫 , 函數(shù)參數(shù)為字符指針

            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 編程 閱讀(5843) 評(píng)論(5)  編輯 收藏 引用 所屬分類: 關(guān)鍵代碼

            評(píng)論

            # re: 轉(zhuǎn)換大小寫C函數(shù) 2006-03-19 17:13 可冰

            /**************************************/
            // 利用字符串?dāng)?shù)組的結(jié)尾都是 \0
            void ToUpper(chars[])
            {
                int i=0;
                while(s[i++]!='\0' )
                {  ^^^^^
            /**************************************/
            你這個(gè)i自加的可不是時(shí)候啊

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

            # re: 轉(zhuǎn)換大小寫C函數(shù) 2006-03-19 17:19 可冰

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

            # re: 轉(zhuǎn)換大小寫C函數(shù) 2006-04-04 10:31 編程之道

            為什么要和0xDF與?   回復(fù)  更多評(píng)論   

            # re: 轉(zhuǎn)換大小寫C函數(shù) 2006-04-04 11:01 編程之道

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

            # re: 轉(zhuǎn)換大小寫C函數(shù) 2009-06-23 16:01 u2u

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

            導(dǎo)航

            統(tǒng)計(jì)

            常用鏈接

            留言簿(4)

            隨筆分類

            隨筆檔案

            文章檔案

            相冊(cè)

            BlogDev

            搜索

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

            青青热久久国产久精品| 99久久亚洲综合精品成人| 久久er国产精品免费观看2| 97久久国产露脸精品国产| 亚洲欧洲精品成人久久奇米网| 四虎国产永久免费久久| 色综合久久中文综合网| 国产精品久久波多野结衣| 国内精品久久九九国产精品| 波多野结衣中文字幕久久| 久久r热这里有精品视频| 91久久精品视频| 人人狠狠综合久久亚洲高清| 久久99热这里只频精品6| 久久婷婷色综合一区二区| 国产精品99久久久精品无码| 久久精品欧美日韩精品| 国产99久久九九精品无码| 少妇被又大又粗又爽毛片久久黑人| 香蕉aa三级久久毛片| 蜜臀av性久久久久蜜臀aⅴ麻豆| 国产精品99精品久久免费| 94久久国产乱子伦精品免费| 久久久无码精品亚洲日韩软件| 精品久久久一二三区| 欧美亚洲色综久久精品国产| 亚洲乱亚洲乱淫久久| 久久久亚洲裙底偷窥综合 | 嫩草影院久久99| 日本亚洲色大成网站WWW久久| 久久人人添人人爽添人人片牛牛| 奇米综合四色77777久久| 精品无码久久久久久久动漫| 色婷婷综合久久久中文字幕| 91久久香蕉国产熟女线看| 久久久久久精品免费看SSS| 狠色狠色狠狠色综合久久| 久久人人添人人爽添人人片牛牛| 久久精品一区二区国产| 综合人妻久久一区二区精品| 久久国产成人亚洲精品影院|