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

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 閱讀(1885) 評論(0)  編輯 收藏 引用 所屬分類: C++_BASIS
<2012年4月>
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>
            日韩视频在线观看免费| 亚洲电影免费观看高清完整版| 欧美在线观看视频一区二区| 国产精品va在线播放| 欧美中文字幕久久| 香蕉久久夜色| 欧美亚洲视频在线观看| 亚洲欧美综合| 久久久久久综合网天天| 久久亚洲不卡| 欧美国产日韩二区| 欧美日韩亚洲国产一区| 国产精品久久久久影院色老大| 国产精品久久夜| 韩国自拍一区| 亚洲黄色尤物视频| 亚洲视频电影图片偷拍一区| 亚洲女人小视频在线观看| 久久精品一区二区国产| 亚洲福利视频在线| 91久久精品美女| 亚洲影院在线| 欧美a级理论片| 国产精品嫩草99av在线| 亚洲第一在线| 亚洲免费视频在线观看| 免费观看亚洲视频大全| 亚洲人成绝费网站色www| 亚洲色图在线视频| 先锋亚洲精品| 欧美承认网站| 亚洲一级黄色片| 久久天天狠狠| 国产精品入口| 一本综合久久| 麻豆国产精品va在线观看不卡| 亚洲第一福利视频| 性做久久久久久免费观看欧美| 欧美11—12娇小xxxx| 国产麻豆精品久久一二三| 亚洲精品中文字幕女同| 久久久久久国产精品mv| 一区二区激情| 欧美成人综合网站| 国产原创一区二区| 亚洲综合色丁香婷婷六月图片| 老司机亚洲精品| 亚洲一二三区视频在线观看| 欧美精品自拍偷拍动漫精品| 一区二区视频免费在线观看| 欧美亚洲综合网| 日韩网站在线观看| 欧美精品成人91久久久久久久| 欧美激情视频在线播放| 国内精品久久久久久| 性欧美超级视频| 99精品99| 亚洲永久精品国产| 久久天天狠狠| 一区二区三区日韩欧美精品| 欧美大片在线影院| 1024成人| 欧美高清一区二区| 久久中文字幕一区二区三区| 国产视频亚洲精品| 亚洲女同精品视频| 一区二区三区www| 欧美日韩视频免费播放| 一区二区精品在线| 亚洲免费av电影| 欧美精品一区三区| 夜夜嗨av一区二区三区网站四季av | 久久国产日韩| 国产一区导航| 国产一区二区三区在线观看免费 | 国产精品乱码久久久久久| 一区二区三区黄色| 日韩性生活视频| 国产精品久久久久aaaa樱花| 午夜精品久久久久久久男人的天堂| 99re66热这里只有精品4| 欧美日韩亚洲视频| 午夜久久久久| 久久大综合网| 亚洲全黄一级网站| 一区二区三区精密机械公司 | 亚洲午夜电影在线观看| 国产精品视频久久一区| 久久人人精品| 欧美电影免费观看网站| 亚洲在线观看免费视频| 亚洲欧美综合另类中字| 在线观看中文字幕亚洲| 亚洲黄色成人| 午夜精品久久久久| 黄色精品一区二区| 欧美丰满高潮xxxx喷水动漫| 欧美日韩精品是欧美日韩精品| 在线亚洲美日韩| 香蕉尹人综合在线观看| 亚洲国产裸拍裸体视频在线观看乱了 | 欧美韩日精品| 夜夜夜久久久| 亚洲自拍另类| 亚洲第一网站免费视频| 日韩一区二区免费高清| 国产一区二区中文| 91久久久亚洲精品| 国产亚洲欧美一区在线观看 | 香蕉精品999视频一区二区| 久久精品青青大伊人av| 日韩一级欧洲| 欧美自拍偷拍午夜视频| 一本色道久久99精品综合| 午夜在线成人av| 日韩亚洲欧美精品| 久久精品一二三区| 性色av一区二区三区在线观看 | 久久网站免费| 亚洲欧美一区二区三区久久| 欧美成人免费视频| 久久久久网址| 国产精品一区视频网站| 91久久精品国产91性色tv| 黄色精品一区二区| 久久av红桃一区二区小说| 亚洲网站视频福利| 男女av一区三区二区色多| 欧美一区高清| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ入口 | 另类人畜视频在线| 久久久五月天| 国产精品影院在线观看| 一区二区日韩| 亚洲一区二区精品| 欧美日韩视频不卡| 日韩午夜黄色| aa成人免费视频| 老司机午夜精品视频在线观看| 久久亚洲欧美国产精品乐播| 国产欧美日韩亚洲一区二区三区| 亚洲美女av在线播放| 99精品国产99久久久久久福利| 欧美va天堂在线| 欧美电影免费观看| 亚洲国产精品久久久久婷婷884| 久久精品国产亚洲一区二区| 久久久精品午夜少妇| 国产日韩欧美三级| 亚洲永久免费观看| 久久精品一区二区三区不卡| 狠狠色综合网| 久久视频免费观看| 免费高清在线一区| 亚洲精品视频在线看| 欧美精品三级| 一区二区三区福利| 欧美主播一区二区三区美女 久久精品人| 国产精品久久久久久久久久直播| 欧美精品一区二区蜜臀亚洲| 久久久噜久噜久久综合| 国产日韩欧美在线看| 久久av在线| 欧美.www| 夜夜爽夜夜爽精品视频| 国产精品网红福利| 久久国产手机看片| 亚洲国产岛国毛片在线| 一区二区三区视频观看| 国产精品色婷婷| 久久久久久久性| 亚洲欧洲精品一区二区| 亚洲欧美综合另类中字| 激情av一区| 欧美日本高清一区| 亚洲免费伊人电影在线观看av| 久久伊人亚洲| 亚洲视频成人| 在线观看欧美日本| 国产精品久久久久久久久果冻传媒 | 另类酷文…触手系列精品集v1小说| 亚洲第一黄网| 国产精品草莓在线免费观看| 久久本道综合色狠狠五月| 亚洲人成在线影院| 久久久久九九视频| 亚洲图片欧美午夜| 亚洲激情视频网站| 国产欧美精品xxxx另类| 欧美电影在线免费观看网站| 亚洲午夜av电影| 亚洲狠狠丁香婷婷综合久久久| 久久精品女人的天堂av| 亚洲一区二区高清视频| 亚洲日本欧美在线| 精品91视频| 国产精品有限公司| 欧美日韩国产一中文字不卡| 久久免费视频观看| 亚洲欧美一区二区精品久久久|