JUST DO IT ~

          我只想當(dāng)個(gè)程序員

          memcpy_s strncpy 目標(biāo)緩沖區(qū) 小于 實(shí)際緩沖區(qū)

           

          目標(biāo)緩沖區(qū) 小于 實(shí)際緩沖區(qū)

           

          char *name = "1234567890";
          char name2[6]={0};

          memcpy_s( name2 ,  sizeof(name2) ,  name, strlen(name));

          動(dòng)態(tài)執(zhí)行失敗 (DEBUG ASSERTION FAILED !) 運(yùn)行庫(kù)和調(diào)試庫(kù)都會(huì)提示出錯(cuò).

           

          注意:    指針sizeof( 指針 ) = 4  

          strncpy(name2,name ,sizeof(name) );             打印name2  1234 

           

          strncpy(name2,name ,strlen(name) );            打印name2   123456IOIPNUUY

          優(yōu)化這個(gè)語(yǔ)句,盡量拷貝內(nèi)容

          strncpy(name2,name ,   strlen(name)>sizeof(name2)? sizeof(name2): strlen(name)   );

           

           

          目標(biāo)緩沖區(qū) 小于 實(shí)際緩沖區(qū)

          strncpy(name2,name ,sizeof(name2)-1 );

          sizeof(name2)-1 ------------>讓最后一個(gè)name2字符留給\0 否則這個(gè)字符也被拷貝了.

           

           

           

          看一下LINUX下的兩個(gè)函數(shù)的源代碼,印象會(huì)更加深刻一些
          void * memcpy(void * dest,const void *src,size_t count)
          {
              char *tmp = (char *) dest, *s = (char *) src;
              while (count--)
                  *tmp++ = *s++;
              return dest;
          }
          char * strcpy(char * dest,const char *src)
          {
              char *tmp = dest;
              while ((*dest++ = *src++) != '\0')
                  /* nothing */;
              return tmp;
          }
          老實(shí)講,這兩個(gè)函數(shù)長(zhǎng)得是很帥

           

           

          參考

          http://stackoverflow.com/questions/4593907/difference-between-strncpy-and-memcpy

           

          http://www.cppblog.com/Tim/archive/2011/04/02/143259.aspx

          posted on 2013-09-18 00:12 小高 閱讀(464) 評(píng)論(0)  編輯  收藏 所屬分類: C

          導(dǎo)航

          <2013年9月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          統(tǒng)計(jì)

          常用鏈接

          留言簿(3)

          隨筆分類(352)

          收藏夾(19)

          關(guān)注的blog

          手冊(cè)

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 普兰店市| 陇南市| 浦县| 赣州市| 土默特左旗| 翁牛特旗| 宜春市| 清水河县| 闽清县| 温宿县| 壤塘县| 灵台县| 万山特区| 常宁市| 云和县| 中江县| 慈利县| 谷城县| 莱西市| 沾化县| 米泉市| 湘阴县| 石狮市| 道真| 景宁| 楚雄市| 长泰县| 布尔津县| 蓬莱市| 敦化市| 肃南| 宜宾县| 屏东县| 山阳县| 许昌市| 眉山市| 南部县| 巍山| 乳源| 长治县| 宜阳县|