青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

posts - 297,  comments - 15,  trackbacks - 0
函數:int memcmp (const void *a1, const void *a2, size_t size) 
       函數memcmp用于比較字符串s1與s2的前size個字符。
      如果兩上字符塊相同,memcmp將返回0。

函數:int strcmp (const char *s1, const char *s2) 
        這個函數用來比較s1和s2字符串,這個函數將返回一個值,它的符號與第一對不同的字符的比較結果相關。
       如果兩個字符串相等的話,strcmp將返回0。
       如果s1是s2的一個子串的話,s1小于s2
此外還有函數 
    int strncmp (const char *s1, const char *s2, size_t size) 
    此函數與strcmp極為類似。不同之處是,strncmp函數是指定比較size個字符。也就是說,如果字符串s1與s2的前size個字符相同,函數返回值為0。

功能比較:

     二者都可以用于字符串的比較,但是二者是有比較大的差異的,因為strcmp是按照字節(byte-wise)比較的,并且比較的過程中會檢查是否出現了"\0"結束符,一旦任意一個字符串指針前進過程中遇到結束符,將終止比較。而memcmp函數是用于比較兩個內存塊的內容是否相等,在用于字符串比較時通常用于測試字符串是否相等,不常進行byte-wise的字符串比較。如果要比較的對象中包含一些由于邊界對齊需求而填入結構對象中的空格、聯合 (union)結束的額外空格、字符串所分配的空間未使用完的部分引起的“holes”的話,最好使用memcmp來完成。這些“holes”的內容是不確定的,在執行byte-wise比較時結果也是不明確的。

效率差異:
     strcmp比較的字符串,而memcmp比較的是內存塊,strcmp需要時刻檢查是否遇到了字符串結束的 \0 字符,而memcmp則完全不用擔心這個問題,所以memcmp的效率要高于strcmp

使用示例:

給出一個如下的結構定義:
struct foo
  {
    unsigned char tag;
    union
       {
         double f;
        long i;
          char *p;
       } value;
  };
      如果要比較兩個struct foo對象的話,建議最好使用memcmp。
     在給出一個字符串比較的例子,判斷字符串str中前四個中字符是否為 0x80100001,因為0x00對于字符串而言,這是個結束符,如果使用strncmp的話strncmp(str,"\x80\x10\x00 \x01",4)的話,實際效果是只判斷了是否含有0x8010,也就是說一旦str中前兩個字符為0x8010就返回0,表示相同了,顯然這是不正確的!此時應該使用memcmp(str,"\x80\x10\x00\x01",4),這樣一來就達到了目的

 附:strcmp,strncmp,memcmp的Linux的源代碼

/**
 * strcmp - Compare two strings
 * @cs: One string
 * @ct: Another string
 */
int strcmp(const char *cs, const char *ct)
{
        signed char __res;

        while (1) {
                if ((__res = *cs - *ct++) != 0 || !*cs++)
                        break;
        }
        return __res;
}

 /**
 * strncmp - Compare two length-limited strings
 * @cs: One string
 * @ct: Another string
 * @count: The maximum number of bytes to compare
 */
int strncmp(const char *cs, const char *ct, size_t count)
{
        signed char __res = 0;

        while (count) {
                if ((__res = *cs - *ct++) != 0 || !*cs++)                  //比較到結束符\0,時,已經做了__res = *cs - *ct了,所以不等長度時,肯定返回不為0
                        break;
                count--;
        }
        return __res;
}
/**
 * memcmp - Compare two areas of memory
 * @cs: One area of memory
 * @ct: Another area of memory
 * @count: The size of the area.
 */
int memcmp(const void *cs, const void *ct, size_t count)
{
        const unsigned char *su1, *su2;
        int res = 0;
        for (su1 = cs, su2 = ct; 0 < count; ++su1, ++su2, count--)
                if ((res = *su1 - *su2) != 0)
                        break;
        return res;
}

轉自:

http://blog.chinaunix.net/u2/67780/showart_2079171.html


posted on 2009-11-24 12:04 chatler 閱讀(1891) 評論(0)  編輯 收藏 引用 所屬分類: C++_BASIS
<2009年11月>
25262728293031
1234567
891011121314
15161718192021
22232425262728
293012345

常用鏈接

留言簿(10)

隨筆分類(307)

隨筆檔案(297)

algorithm

Books_Free_Online

C++

database

Linux

Linux shell

linux socket

misce

  • cloudward
  • 感覺這個博客還是不錯,雖然做的東西和我不大相關,覺得看看還是有好處的

network

OSS

  • Google Android
  • Android is a software stack for mobile devices that includes an operating system, middleware and key applications. This early look at the Android SDK provides the tools and APIs necessary to begin developing applications on the Android platform using the Java programming language.
  • os161 file list

overall

搜索

  •  

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            国产日韩精品视频一区二区三区| 欧美理论电影在线播放| 国产精品夜色7777狼人 | 欧美福利视频在线观看| 亚洲经典三级| 亚洲国产一区二区三区高清| 久久综合伊人77777麻豆| 亚洲电影在线免费观看| 亚洲电影成人| 欧美日韩大陆在线| 亚洲在线视频| 欧美一区三区三区高中清蜜桃 | 欧美久久久久| 欧美三级韩国三级日本三斤| 欧美电影免费| 亚洲日本在线视频观看| 欧美裸体一区二区三区| 国产一区白浆| 久久夜色精品一区| 久久精品免视看| 欧美在线观看你懂的| 国产精品久久久久久久久借妻| 亚洲乱亚洲高清| 99国产精品久久久久久久| 欧美二区在线观看| 亚洲国产日韩欧美| 亚洲美女网站| 欧美日本一区二区视频在线观看| 亚洲激情另类| 一级日韩一区在线观看| 欧美日韩精品在线视频| 一本大道久久a久久精品综合| 宅男66日本亚洲欧美视频| 欧美日韩精品二区第二页| 日韩亚洲欧美在线观看| 午夜久久99| 国产午夜久久| 久久人体大胆视频| 亚洲国产一区二区a毛片| 一区二区三区www| 欧美日韩精品久久久| 亚洲一级免费视频| 久久久久久久久久看片| 亚洲国产成人精品久久久国产成人一区 | 久久国产66| 久久久久久自在自线| 在线欧美日韩国产| 欧美黄色影院| 在线亚洲+欧美+日本专区| 性伦欧美刺激片在线观看| 国模套图日韩精品一区二区| 看欧美日韩国产| 亚洲精选在线| 午夜精品影院| 亚洲国产精品999| 欧美日韩高清在线| 欧美亚洲综合网| 亚洲丰满少妇videoshd| 亚洲淫性视频| 在线亚洲电影| 国产精品第三页| 欧美在线在线| 亚洲激情亚洲| 欧美在线视频在线播放完整版免费观看| 韩国精品久久久999| 欧美第十八页| 午夜伦理片一区| 亚洲欧洲日韩综合二区| 久久精品1区| 99精品久久久| 激情综合在线| 国产精品久久久久久久app| 久久在线精品| 亚洲香蕉伊综合在人在线视看| 免费久久精品视频| 性欧美video另类hd性玩具| 亚洲人成网站色ww在线| 国产人妖伪娘一区91| 欧美精品二区| 久久久爽爽爽美女图片| 亚洲自拍电影| 99精品欧美一区| 欧美激情四色| 久久亚洲一区二区| 亚欧美中日韩视频| 亚洲一区二区成人在线观看| 亚洲区第一页| 极品尤物久久久av免费看| 国产精品日韩二区| 欧美视频官网| 欧美精品综合| 欧美成人精品一区| 免费看精品久久片| 久久人人97超碰精品888| 欧美一区国产在线| 小嫩嫩精品导航| 亚洲欧美成aⅴ人在线观看| 99视频一区二区| 日韩一级精品视频在线观看| 亚洲欧洲日韩女同| 亚洲人成小说网站色在线| 欧美国产视频一区二区| 麻豆成人在线播放| 欧美成ee人免费视频| 欧美+日本+国产+在线a∨观看| 久久免费视频观看| 久久久精品国产免大香伊| 久久精品成人| 久久亚洲影音av资源网| 久久一区视频| 男男成人高潮片免费网站| 欧美成人情趣视频| 欧美国产第一页| 亚洲国产精品久久久久秋霞蜜臀| 亚洲国产成人精品久久久国产成人一区 | 午夜在线a亚洲v天堂网2018| 亚洲欧美韩国| 性欧美18~19sex高清播放| 欧美一区二视频在线免费观看| 欧美一区二区三区男人的天堂| 久久都是精品| 免费成人黄色| 欧美日韩精品系列| 国产精品一区二区三区乱码| 国产一区久久| 亚洲欧洲一区二区三区久久| 在线视频精品一区| 性做久久久久久| 久热re这里精品视频在线6| 欧美激情中文字幕一区二区| 亚洲精品国产精品国自产在线| 亚洲最黄网站| 欧美在线观看一区二区| 欧美成人免费大片| 国产精品久久九九| 精品999在线观看| 99v久久综合狠狠综合久久| 午夜在线一区| 欧美成黄导航| 一区二区不卡在线视频 午夜欧美不卡在 | 另类成人小视频在线| 欧美日韩亚洲一区三区 | 黄色亚洲在线| 最近看过的日韩成人| 亚洲综合色激情五月| 久久精品夜色噜噜亚洲a∨ | 久久裸体视频| 亚洲精品久久久久久久久久久久 | 亚洲精品一品区二品区三品区| 亚洲欧美日韩区| 欧美xart系列高清| 一区二区三区福利| 久久亚洲免费| 国产精品成人v| 在线观看亚洲| 午夜精品久久久99热福利| 欧美国产免费| 亚洲欧美在线一区| 欧美好骚综合网| 国产一区二区欧美| 亚洲天堂成人| 欧美黄色一区| 欧美在线视频免费播放| 欧美日韩一区二区在线播放| 亚洲大片av| 久久爱91午夜羞羞| 夜夜嗨av一区二区三区网站四季av | 欧美v国产在线一区二区三区| 国产精品一区一区| 亚洲无毛电影| 91久久国产精品91久久性色| 久久精品日韩一区二区三区| 国产精品视频一区二区高潮| 9久草视频在线视频精品| 猛干欧美女孩| 欧美一区二区三区婷婷月色| 国产精品久久夜| 亚洲深夜福利| 亚洲精品日本| 欧美国产精品专区| 亚洲高清在线播放| 久久亚洲精品中文字幕冲田杏梨| 亚洲欧美国产高清| 国产精品美女久久久| 亚洲影音先锋| 99精品99| 国产精品va在线| 亚洲视频一区二区在线观看| 亚洲精品社区| 欧美日韩国产色视频| 一本久道久久综合狠狠爱| 亚洲日本一区二区| 欧美激情综合五月色丁香小说| 亚洲国产精彩中文乱码av在线播放| 久久综合五月| 噜噜噜噜噜久久久久久91| 最新精品在线| 91久久精品日日躁夜夜躁欧美| 欧美精品亚洲一区二区在线播放| 亚洲乱码久久|