strcpyのとmemcpyの差(RPM)

strcpyのとmemcpyのは、彼らが次のような特徴があり、標準Cライブラリ関数です。
strcpyのは、文字列のコピーを提供します。strcpyのは、すなわち文字列のみをコピーするため、そして、それは文字列をコピーし、文字列がコピーされますターミネータ以外の唯一のものではありません。

strcpyの関数プロトタイプが知られている:するchar * strcpyの(するchar * DEST、CONSTのchar * SRC)
のmemcpyは、一般的なメモリの複製を提供します。コンテンツをコピーすることのmemcpyの必要性は限定されるものではなく、したがって、より汎用性の高いです。
無効 *のmemcpy( 無効 * DEST  constの ボイド *のSRC  size_tの COUNT  )。

char  * strcpy ( char  * dest, const  char  * src) // 实现src到dest的复制
{
   if  ((src == NULL) || (dest == NULL)) //判断参数src和dest的有效性
  {
 
       return  NULL;
  }
   char  *strdest = dest;        //保存目标字符串的首地址
   while  ((*strDest++ = *strSrc++)!= '\0' ); //把src字符串的内容复制到dest下
   return  strdest;
}
 
 
void  * memcpy ( void  *memTo, const  void  *memFrom, size_t  size)
{
   if ((memTo == NULL) || (memFrom == NULL)) //memTo和memFrom必须有效
          return  NULL;
   char  *tempFrom = ( char  *)memFrom;             //保存memFrom首地址
   char  *tempTo = ( char  *)memTo;                  //保存memTo首地址     
   while (size -- > 0)                //循环size次,复制memFrom的值到memTo中
          *tempTo++ = *tempFrom++ ; 
   return  memTo;
}

strcpyのと、次の三つの側面との間にmemcpyの主な違い。
1、コンテンツの別のコピー。strcpyのは、専用の文字列をコピーし、任意のコンテンツはmemcpyを、例えば文字列、整数、構造などをコピーすることができます。
2コピーの異なる方法。strcpyの長さを指定する必要はありません、それは最後までコピーされたターミネータ「\ 0」であることを文字列に遭遇し、それがオーバーフローしやすいです。memcpyのコピーの長さはその三つのパラメータに応じて決定されます。
3、異なる目的のために。通常使用strcpyの他のタイプのデータをコピーする必要がありながら、文字列のコピーは、一般のmemcpyを使用する場合

 

編集者:ブログの庭:ボレバー

おすすめ

転載: www.cnblogs.com/WHUT-Simon/p/11668270.html