文字列操作関数 (string.h)

char* strcpy( char* dst, const char* src );
char*
strncpy( char* dst, const char* src, size_t len );
char* _fstrcpy( char far* dst, const char far* src );

ヌル終端文字列 srcdst にコピーし、dst を返します。strncpy では、コピーする最大の長さを len で指定できます。コピーが len の制限によって終了したときを除き、dst の末尾には 0 が付加されます。

void* memcpy( void* dst, const void* src, size_t len );
void*
memmove( void* dst, const void* src, size_t len );
void*
_fmemcpy( void far* dst, const void far* src, size_t len );
void*
_fmemmove( void far* dst, const void far* src, size_t len );

srclen バイトだけ dst にコピーします。memmove では、コピー元とコピー先のメモリ範囲が重なっている場合でも、正しくコピーが行われます。

void* memset( void* dst, int chr, size_t len );
void*
_fmemset( void far* dst, int chr, size_t len );

chr で示されるバイトを dst 以降の len バイトの範囲にコピーします。

char* strcat( char* dst, const char* src );
char*
strncat( char* dst, const char* src, size_t len );
char*
_fstrcat( char far* dst, const char far* src );

文字列 src を文字列 dst の末尾に連結し、dst を返します。strncat では、src からコピーする最大の長さを len で指定できます。dst の末尾には、必ず 0 が付加されます。

size_t strlen( const char* str );
size_t
_fstrlen( const char far* str );

str の長さを返します。つまり、str 上の最初の 0 までのバイト数を返します。

int strcmp( const char* dst, const char* src );
int
strncmp( const char* dst, const char* src, size_t len );
int
memcmp( const void* dst, const void* src, size_t len );
int
_fstrcmp( const char far* dst, const char far* src );
int
_fmemcmp( const void far* dst, const void far* src, size_t len );

dstsrc を比較し、一致した場合は 0 を返します。一致しない場合は、最初の相違バイトを比較して、dst の方が大きい場合は 1 を、dst の方が小さい場合は -1 を返します。

strncmp では、比較する最大の長さを len で指定できます。memcmp では、常に len バイト分のメモリが比較されます。

int _stricmp( const char* dst, const char* src );
int
_memicmp( const void* dst, const void* src, size_t len );
int
_fstricmp( const char far* dst, const char far* src );
int
_fmemicmp( const void far* dst, const void far* src, size_t len );

strcmp および memcmp と似ていますが、半角の大文字と小文字を区別しません。全角文字の第 2 バイトが半角英字と同じコードになるときも、正しく処理されます。

int _strhcmp( const char* area, const char* str );

文字列 area の先頭部分が文字列 str と一致した場合は、0 を返します。それ以外の場合は、strcmp と同じ方式で 1 または -1 を返します。

int _strtcmp( const char* area, const char* str );

文字列 area の最後の部分が文字列 str と一致した場合は、0 を返します。それ以外の場合は、0 以外を返します。

char* strchr( const char* area, int chr );
char*
strrchr( const char* area, int chr );
void*
memchr( const void* area, int chr, size_t len );
char far*
_fstrchr( const char far* area, int chr );
void far*
_fmemchr( const void far* area, int chr, size_t len );

area からバイト値 chr を検索し、発見した最初のバイトへのポインタを返します。見つからない場合は、NULL を返します。strchrstrrchr は、文字列 area の終端までを検査します。memchr は、常に len バイト分のメモリを検査します。strrchrarea を末尾から検索します。

char* strstr( const char* area, const char* str );
void*
_memstr( const void* area, const char* str, size_t len );

文字列 area から文字列 str を検索し、発見した最初の文字列へのポインタを返します。見つからない場合は、NULL を返します。

size_t strspn( const char* area, const char* str );

文字列 area から、str に含まれるいずれかのバイトを検索します。発見した場合は、先頭からそのバイトまでの距離を返します。発見できなかった場合は、area の長さを返します。

size_t strcspn( const char* area, const char* str );

文字列 area から、str に含まれないバイトを検索します。発見した場合は、先頭からそのバイトまでの距離を返します。発見できなかった場合は、area の長さを返します。

char* strpbrk( const char* area, const char* str );

文字列 area から、str に含まれるいずれかのバイトを検索します。発見した場合は、そのバイトへのポインタを返します。発見できなかった場合は、NULL を返します。

char* strtok( char* text, const char* delim );

text をトークンに分割します。文字列 delim で、デリミタ (区切り文字) として使用するバイト群を指定します。text の内容は書き換えられます。

text の先頭にあるデリミタ バイト群を飛ばした後、text 上でトークンとなる範囲の末尾に 0 を書き込み、トークンの先頭を返します。次に、text に NULL を指定してこの関数を呼び出すと、前回切り出したトークンの次のトークンが返されます。
char buf[] = "\t Dear sir,\n";
char* tk = strtok( buf, " \t\n" ); // tk = "Dear"
tk = strtok( NULL, " \t\n" ); // tk = "sir,"
tk = strtok( NULL, " \t\n" ); // tk = NULL

int _memrep( void* area, size_t len, char* sch, char* rep );

len バイトのデータ area に含まれる文字列 sch をすべて文字列 rep に置換し、置換した数を返します。area には、置換後の文字列を格納するための十分な大きさが必要です。

void _memshl( void* mem, size_t len, int count );

len バイトのデータ mem を左に count ビットだけシフトします。右にシフトするには、count に負数を指定します。

void _memand( void* dst, size_t len, const void* src );
void
_memor( void* dst, size_t len, const void* src );
void
_memxor( void* dst, size_t len, const void* src );

それぞれ dstsrc の論理積、論理和、排他的論理和を計算し、結果を dst に格納します。

void _memnot( void* mem, size_t len );

len バイトのデータ mem のビットを反転します。