JUST DO IT ~

          我只想當個程序員

          memcpy_s strncpy 目標緩沖區 小于 實際緩沖區

           

          目標緩沖區 小于 實際緩沖區

           

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

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

          動態執行失敗 (DEBUG ASSERTION FAILED !) 運行庫和調試庫都會提示出錯.

           

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

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

           

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

          優化這個語句,盡量拷貝內容

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

           

           

          目標緩沖區 小于 實際緩沖區

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

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

           

           

           

          看一下LINUX下的兩個函數的源代碼,印象會更加深刻一些
          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;
          }
          老實講,這兩個函數長得是很帥

           

           

          參考

          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) 評論(0)  編輯  收藏 所屬分類: C

          導航

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

          統計

          常用鏈接

          留言簿(3)

          隨筆分類(352)

          收藏夾(19)

          關注的blog

          手冊

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 绥宁县| 白水县| 山阴县| 上高县| 仪征市| 广宗县| 巫溪县| 沙湾县| 泰顺县| 军事| 铜陵市| 洛宁县| 扎囊县| 德阳市| 上思县| 赤水市| 颍上县| 手游| 香格里拉县| 左云县| 前郭尔| 板桥市| 炉霍县| 西丰县| 大方县| 涿州市| 万源市| 泗洪县| 惠州市| 都安| 东至县| 河池市| 咸阳市| 怀远县| 成武县| 白银市| 海盐县| 菏泽市| 新余市| 烟台市| 镇赉县|