MEMORY(3) — NEWS-OS Programmer’s Manual
名称
memccpy, memchr, memcmp, memcpy, memmove, memset − メモリ操作
形式
include <string.h>
char ∗memccpy (s1, s2, c, n)
char ∗s1, ∗s2;
int c, n;
char ∗memchr (s, c, n)
char ∗s;
int c, n;
int memcmp (s1, s2, n)
char ∗s1, ∗s2;
int n;
char ∗memcpy (s1, s2, n)
char ∗s1, ∗s2;
int n;
char ∗memmove (s1, s2, n)
char ∗s1, ∗s2;
int n;
char ∗memset (s, c, n)
char ∗s;
int c, n;
解説
これらの関数は、 メモリ領域 (ナル文字で終わらずにバイト数で境界が指定されたバイト列) に できるだけ効率的に働きます。 これらは受け取り側のオーバフローについて全くチェックしません。
memccpy() は、メモリ領域 s2 から s1 へバイト列をコピーし、 最初に現れた c をコピーした時、 または n バイト全部をコピーした時、 コピーを終了します。 このルーチンは、 s1 の c のコピーが終わると次のポインタを返し、 s2 の最初の n バイト以内に c がないときはナルポインタを返します。 c は unsigned char に変換され、 s2 の各バイトも unsigned char と解釈されます。
memchr() は、メモリ領域 s の最初の n バイトの中に c を見つけるとそのポインタを返し、 c がないときはナルポインタを返します。 c は unsigned char に変換され、 s1 の各バイトも unsigned char と解釈されます。
memcmp() は、最初の n バイトだけについて引数を比べ (比較は unsigned char で行う)、 s1 が s2 より辞書的に小さい (前) か、等しいか、大きい (後) かによって、 0 より小さい、0、0 より大きい整数値を返します。
memcpy() は、 s2 から n バイトを s1 へコピーし、 s1 を返します。
memmove() は、 s2 から n バイトを s1 へコピーし、 s1 を返します。 s1 と s2 の指すバイト列が重なっている場合でも、コピーは正しく行われます。
memset() は、 メモリ領域 s の最初の n バイトを c の値に設定し、 s を返します。
注意事項
ユーザの便宜を計るため、 これらの関数は全てヘッダファイル <string.h> の中で宣言しています。
バイトの移動は、インプリメントごとに異なるので、 重なりの生じる移動では、思いどおりにならないかもしれません。
関連事項
NEWS-OSRelease 4.2.1R