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

Cで独自のmemcpy()を書く


ここでは、Cでmemcpy()関数を実装する方法を説明します。memcpy()関数は、データのブロックをある場所から別の場所にコピーするために使用されます。 memcpy()の構文は次のようになります-

void * memcpy(void * dest, const void * srd, size_t num);

独自のmemcpyを作成するには、指定されたアドレスをchar *に型キャストしてから、データをソースから宛先にバイト単位でコピーする必要があります。次のコードを実行するだけで、より良いアイデアを得ることができます。

#include<stdio.h>
#include<string.h>
void custom_memcpy(void *dest, void *src, size_t n) {
   int i;
   //cast src and dest to char*
   char *src_char = (char *)src;
   char *dest_char = (char *)dest;
   for (i=0; i<n; i++)
      dest_char[i] = src_char[i]; //copy contents byte by byte
}
main() {
   char src[] = "Hello World";
   char dest[100];
   custom_memcpy(dest, src, strlen(src)+1);
   printf("The copied string is %s\n", dest);
   int arr[] = {10, 20, 30, 40, 50, 60, 70, 80, 90};
   int n = sizeof(arr)/sizeof(arr[0]);
   int dest_arr[n], i;
   custom_memcpy(dest_arr, arr, sizeof(arr));
   printf("The copied array is ");
   for (i=0; i<n; i++)
      printf("%d ", dest_arr[i]);
}

出力

The copied string is Hello World
The copied array is 10 20 30 40 50 60 70 80 90

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

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

  2. 独自のブラウザ拡張機能の作成方法 [サンプル プロジェクトを含む]

    この記事では、ブラウザーの拡張機能について説明します。拡張機能とは何か、どのように機能するのか、独自の拡張機能を構築する方法について説明します。 最後に、ボタンを 1 回クリックするだけで任意のコード スニペットをクリップボードにコピーできる独自の拡張機能を実際に作成します (非常に楽しい!)。 この記事を続けるには: JavaScript の基本的な知識が必要です。 Firefox ブラウザが必要です (または他のブラウザでも動作します) ブラウザ拡張機能とは? ブラウザ拡張機能は、ブラウザに追加するもので、ブラウザの容量を拡張してブラウジング エクスペリエンスを向上させます。