memset

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

memsetとは、<string.h>(文字列操作関数群)で定義されているC言語関数である。

指定されたポインタが指すオブジェクトの先頭から、指定された文字数分に、指定したデータを書き込むはたらきをする。

形式[編集]

#include<string.h>
void *memset(void *s, int c, size_t n);

sは、unsigned char *型にキャストされ、cは、unsigned char型にキャストされる。

利用例[編集]

文字列を空にする際、以下の様に実装するのは誤りである。

#include<stdio.h>
#include<string.h>
 
...
char *s;
... /* 適当にsを使う */
 
strcpy(s, NULL); /* 誤り */
 
...

文字列を空にする際は、memsetを用いて以下の様に実装するのが正しい。

#include<stdio.h>
#include<string.h>
 
...
char *s;
... /* 適当にsを使う */
 
memset(s, 0, strlen(s));
 
...

実装例[編集]

memsetを自前で定義したい場合は、以下の様に実装する。

/* memsetと区別するため、大文字を使用 */
void *MemSet(void *str, int c, size_t num)
{
    unsigned char *ptr = (unsigned char *)str;
    const unsigned char ch = c;
 
    while(num--)
        *ptr++ = ch;
 
    return str;
}

関連項目[編集]

外部リンク[編集]