C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

C ++で独自のmemcpy()とmemmove()を記述します


memcpy() functionは、ソースの場所から宛先の場所にデータをコピーするために使用される組み込み関数です。

memcpy関数のプロトタイプ-

void * memcpy(void * destination_location、void * source_location、size_t size)

ソースから宛先にデータを1文字ずつコピーします。

ソリューションの実装を示すプログラム

#include<stdio.h>
#include<string.h>
void MemcpyFunc(void *dest, void *src, size_t n){
   char *dataS = (char *)src;
   char *dataD = (char *)dest;
   for (int i=0; i<n; i++)
      dataD[i] = dataS[i];
}
int main() {
   char dataS[] = "Hello!";
   char dataD[100];
   MemcpyFunc(dataS, dataD, strlen(dataS)+1);
   printf("Copied string is %s", dataD);
   return 0;
}

出力

Copied string is Hello!

memmove() 関数はmemcpy()に似ており、charごとにソースから宛先charにデータをコピーします。これは、ソースと宛先が互いにオーバーラップするときに発生するmemcopy()の問題を克服します。

memmove()では、ソースと宛先の重複の問題を処理する一時配列を使用します。

ソリューションの実装を示すプログラム

#include<stdio.h>
#include<string.h>
void MemcpyFunc(void *dest, void *src, size_t n){
   char *dataS = (char *)src;
   char *dataD = (char *)dest;
   char *temp = new char[n];
   for (int i=0; i<n; i++)
      temp[i] = dataS[i];
   for (int i=0; i<n; i++)
      dataD[i] = temp[i];
}
int main() {
   char dataS[] = "Hello!";
   char dataD[100];
   MemcpyFunc(dataS, dataD, strlen(dataS)+1);
   printf("Moved string is %s", dataD);
   return 0;
}

出力

Moved string is Hello!

  1. システム内のint、float、double、charのサイズを検索するC++プログラム

    C++のデータ型 C ++には多くのデータ型がありますが、最も頻繁に使用されるのはint、float、double、charです。これらのデータ型の詳細は次のとおりです- int -これは、通常4バイトのメモリスペースを必要とする整数データ型に使用されます。 フロート -これは、単精度浮動小数点値または10進値を格納するために使用されます。 float変数は通常4バイトのメモリスペースを必要とします。 ダブル -これは、倍精度浮動小数点値または10進値を格納するために使用されます。通常、double変数には8バイトのメモリスペースが必要です。 char -これ

  2. 独自のシーザー暗号エンコーダーの書き方

    シーザー暗号について聞いたことがありますか ? ジュリアスシーザーはこのテクニックを使用して、敵からの秘密のメッセージを隠しました! シーザー暗号は、最も原始的な暗号化技術の1つです。 このシステムの背後にある主なアイデアは、文字を回転させることです。 x個のアルファベット上の位置 。 たとえば、x = 1の場合 、「A」は「B」になり、「C」は「D」になります。 では、これをコードでどのように実装するのでしょうか? よろしくお願いします。見た目ほど難しくはないことがわかりました。文字は数字(ASCIIコード)で表すことができるという事実を利用します。これにより、2つの数字を