[C言語 標準ライブラリ] string.hの使い方

スポンサーリンク

文字列処理およびメモリ転送処理をするための関数が宣言および定義されています。

スポンサーリンク

マクロ

NULL

実装で定義されたNULLポインタ定数です。

size_t

sizeof演算子の結果である符号なし整数型です。

コピー関数

void *memcpy(void *s1, const void *s2, size_t n)

s2が指すオブジェクトからn文字を、s1が指すオブジェクトにコピーします。
コピー元とコピー先が重なる場合の動作は未定義です。
s1の値が返されます。

void *memmove(void *s1, const void *s2, size_t n)

s2が指すオブジェクトの先頭n文字をs1が指すオブジェクトにコピーします。
コピー元とコピー先が重なる場合も正しくコピーされます。
s1の値が返されます。

void *strcpy(char *s1, const char *s2)

s2が指す文字列を、s1が指す配列にコピーします。
コピー元とコピー先が重なる場合の動作は未定義です。
s1の値が返されます。

void *strncpy(char *s1, const char *s2, size_t n)

s2が指す文字列を、s1が指す配列にコピーします。
s2の長さがn以上の場合はn文字までをコピーし、nより短い場合は残りをNULL文字で埋めます。
コピー元とコピー先が重なる場合の動作は未定義です。
s1の値が返されます。

連結関数

void *strcat(char *s1, const char *s2)

s2が指す文字列を、s1が指す配列の末尾にコピーします。
コピー元とコピー先が重なる場合の動作は未定義です。
s1の値が返されます。

void *strncat(char *s1, const char *s2, size_t n)

s2が指す文字列を、s1が指す配列の末尾ににコピーします。
s2の長さがnより長い場合は切り捨てられます。
コピー元とコピー先が重なる場合の動作は未定義です。
s1の値が返されます。

比較関数

int memcmp(const void *s1, const void *s2, size_t n)

s1が指すオブジェクトの先頭n文字と、s2が指すオブジェクトの先頭n文字をunsigned char型の値として先頭から順に比較します。
等しければ0が返され、s1がs2より大きければ正の整数値が返され、s1がs2より小さければ負の整数値が返されます。

int strcmp(const char *s1, const char *s2)

s1が指す文字列とs2が指す文字列の大小関係を1文字ずつ比較します。
等しければ0が返され、s1がs2より大きければ正の整数値が返され、s1がs2より小さければ負の整数値が返されます。

int strcoll(const char *s1, const char *s2)

s1が指す文字列とs2が指す文字列を比較します。
このとき、いずれの文字列も、ロケールLC_COLLATEカテゴリに基づいて解釈されます。
両方の文字列を現在のロケールに基づいて解釈したときに、等しければ0が返され、s1がs2より大きければ正の整数値が返され、s1がs2より小さければ負の整数値が返されます。

int strncmp(const char *s1, const char *s2, size_t n)

s1が指す文字の配列とs2が指す文字の配列の先頭n文字までの大小関係を1文字ずつ比較します。
等しければ0が返され、s1がs2より大きければ正の整数値が返され、s1がs2より小さければ負の整数値が返されます。

size_t strxfrm(char *s1, const char *s2, size_t n)

s2が指す文字列を変換し、s1が指す配列に格納します。
strcmp関数を二つの変換した文字列に適用した場合、正、0、負の値が返され、それは同じ二つの文字列をstrcoll関数に適用した結果と一致します。
終端を示すNULL文字を含めて、n個を超える文字をs1が指す配列に格納することはありません。
nが0である場合、s1はNULLポインタであっても構いません。
重なり合うオブジェクト間でコピーする場合、その動作は未定義です。
変換した結果の文字列(NULL文字は含まない)が返されます。
戻り値がn以上の場合は、s1が指す配列の内容は不定となります。

探索関数

void *memchr(const void *s, int c, size_t n)

sが指すオブジェクトの先頭n文字(unsigned char型として解釈)の中でunsigned char型に変換したcの最初の出現を探索します。
探索した文字へのポインタが返されます。
ただし、見つからなかった場合は、NULLポインタが返されます。

char *strchr(const char *s, int c)

s2が指す文字列の中に最も先頭側に出現する(char型に変換した)cを探索します。
cは文字列の終端を示すNULL文字でも構いません。
探索した文字へのポインタが返されます。
文字がなければNULLポインタが返されます。

size_t strcspn(const char *s1, const char *s2)

s2が指す文字列中のを含まない、s1が指す文字列の先頭部分の最大の長さを求めます。
その先頭部分の長さが返されます。

char *strpbrk(const char *s1, const char *s2)

s1が指す文字列の中で、s2が指す文字列中のいずれかの文字の最初の出現を探索し、その文字へのポインタが返されます。
いずれの文字も現れない場合は、NULLポインタが返されます。

char *strrchr(const char *s, int c)

sが指す文字列の中に最も末尾側に出現する(char型に変換した)cを探索します。
cは文字列の終端を示すNULL文字でも構いません。
探索した文字へのポインタが返されます。
文字がなければNULLポインタが返されます。

size_t strspn(const char *s1, const char *s2)

s2が指す文字列中の文字だけを含む、s1が指す文字列の先頭部分の最大の長さを求めます。
その先頭部分の長さが返されます。

char *strstr(const char *s1, const char *s2)

s1が指す文字列の中で最も先頭側に出現する、s2が指す文字列と同じ文字の並び(NULL文字は含まない)を探索します。
探索した文字の並びの先頭文字へのポインタが返されます。
見つからなかった場合は、NULLポインタが返されます。
s2が長さ0の文字列であればs1が返されます。

char *strtok(char *s1, const char *s2)

s1が指す文字列を、s2が指す文字列の中のいずれかの文字で区切られる文字の並びへと一連の呼出しによって分割します。
最初の呼出しでは、第1実引数とs1を設定します。
2回目以降の呼出しでは、s1にはNULLポインタを、s2には文字列を区切るための文字の並びを設定します。
なお、s2は呼出しのたびに異なっても構いません。
区切られた文字の並びの最初の文字へのポインタが返されます。
存在しない場合は、NULLポインタが返されます。

その他の関数

char *memset(void *s, int c, size_t n)

sが指すオブジェクトの先頭n文字に、unsigned char型に変換したcの値を代入します。
sの値が返されます。

char *strerror(int errnum)

エラー番号errnumをエラーメッセージ列に対応付けます。
文字列へのポインタが返されます。
その内容は、処理系定義です。
指される配列はプログラムで変更してはならないが、本関数を呼び出すたびに上書きされることがあります。

size_t strlen(const char *s)

sが指す文字列の長さを計算します。
終端を示すNULL文字に先行する文字の個数が返されます。

スポンサーリンク
C言語
コッコ隊長の勉強部屋

コメント