AVR Libc Home Page AVRs AVR Libc Development Pages
Main Page FAQ Library Reference Additional Documentation Example Projects

<string.h>: Strings


Detailed Description

 #include <string.h> 

文字列関数(NULで終わる文字列の操作を行う)

Note:
プログラムメモリ(フラッシュ)内にある文字列の操作については、<avr/pgmspace.h>: Program Space String Utilitiesをご覧ください。

Defines

#define _FFS(x)

Functions

int ffs (int) __attribute__((const ))
int ffsl (long) __attribute__((const ))
int ffsll (long long) __attribute__((const ))
void * memccpy (void *, const void *, int, size_t)
void * memchr (const void *, int, size_t) __ATTR_PURE__
int memcmp (const void *, const void *, size_t) __ATTR_PURE__
void * memcpy (void *, const void *, size_t)
void * memmove (void *, const void *, size_t)
void * memset (void *, int, size_t)
int strcasecmp (const char *, const char *) __ATTR_PURE__
char * strcat (char *, const char *)
char * strchr (const char *, int) __ATTR_PURE__
int strcmp (const char *, const char *) __ATTR_PURE__
char * strcpy (char *, const char *)
size_t strlcat (char *, const char *, size_t)
size_t strlcpy (char *, const char *, size_t)
size_t strlen (const char *) __ATTR_PURE__
char * strlwr (char *)
int strncasecmp (const char *, const char *, size_t) __ATTR_PURE__
char * strncat (char *, const char *, size_t)
int strncmp (const char *, const char *, size_t) __ATTR_PURE__
char * strncpy (char *, const char *, size_t)
size_t strnlen (const char *, size_t) __ATTR_PURE__
char * strrchr (const char *, int) __ATTR_PURE__
char * strrev (char *)
char * strsep (char **, const char *)
char * strstr (const char *, const char *) __ATTR_PURE__
char * strtok_r (char *, const char *, char **)
char * strupr (char *)

Define Documentation

#define _FFS  ) 
 

入力値を2進で考えて、セットされているビットの中で最下位のものの位置を返します。

このマクロは関数 ffs()とよく似ていますが、このマクロでは評価をコンパイラ時に行い、コンパイル時定数表現だけを受け、最終的に単なる定数となります。コンパイル時定数でない表現式を与えるのは推奨できません。変数を入れると大きなコードが生成されます。

Returns:
_FFS()マクロは、セットされているビットの中で最下位のものの位置を返します。最下位ビットの位置は「1」となります。

Function Documentation

int ffs int  val  )  const
 

入力値を2進で考えて、セットされているビットの中で最下位のものの位置を返します。

Returns:
The ffs() マクロは、セットされているビットの中で最下位のものの位置を返します。見つからないときは0を返します。
最下位ビットの位置は「1」となります。
Note:
コンパイル時定数を引数として用いる場合は、 _FFS マクロを使う方がよいです。
int ffsl long  val  )  const
 

ffs() と同じですが、引数として long を受け入れます。

int ffsll long long  val  )  const
 

ffs() と同じですが、引数として long long を受け入れます。

void * memccpy void *  dest,
const void *  src,
int  val,
size_t  len
 

メモリ領域をコピーします。

memccpy() 関数はsrcから始まる領域から、destで始まる領域へ、valに一致する文字が出現するまでコピーを行います。valに一致する文字がなかった場合は(len)バイトコピーした後終了します。

Returns:
memccpy() 関数は、valに一致するデータで終了した場合にはそのデータの次の文字のアドレスを返します。valに一致するデータが見つかる前にlenバイトの転送が終了した場合はNULLを返します。
void * memchr const void *  src,
int  val,
size_t  len
 

文字検索

memchr() 関数はsrcで示されるメモリ領域から(len)バイトの範囲で、最初にvalに一致する文字を探してその位置のアドレスを返します。

Returns:
memchr() 関数はvalに合致した文字のアドレスを返します。もし指定範囲内に見つからなければNULLを返します。
int memcmp const void *  s1,
const void *  s2,
size_t  len
 

メモリエリアの比較

memcmp() 関数はメモリエリアs1とs2からlenバイトを比較します。文字比較はunsigned charとして(辞書順で)行われます。

Returns:
memcmp() 関数は、正又はゼロ又は負の整数値を返します。s1の方が大きい場合は正、s1とs2が等しい場合はゼロ、s1の方が小さい場合は負を返します。
Note:
必ず16bitの変数で受けてください。char(8bit)変数で受けると、型変換時の丸めで誤った結果が得られる場合があります。
Warning:
この関数は -mint8 コンパイラオプションに対応していませんが、等しいかどうかの判定にのみ使用するならば問題なく使用できます。

void * memcpy void *  dest,
const void *  src,
size_t  len
 

メモリ領域をコピーします。

memcpy() 関数は srcが指すメモリエリアから len バイト destが指すエリアにコピーします。srcとdestメモリエリアは重なり合っていてはいけません。メモリエリアが重なり合う場合のコピーは、 memmove() をお使いください。

Returns:
memcpy() 関数は dest領域へのポインタ(==destそのもの)を返します。

void * memmove void *  dest,
const void *  src,
size_t  len
 

メモリ領域をコピーします。

memmove() 関数は 関数は srcが指すメモリエリアから len バイト destが指すエリアにコピーします。srcとdestメモリエリアは重なり合っていてもOKです。

Returns:
memmove() 関数は dest領域へのポインタ(==destそのもの)を返します。
void * memset void *  dest,
int  val,
size_t  len
 

メモリ領域を同じ値で埋めます。

memset() 関数は dest が指すメモリエリアの len バイト分を 値 val で埋めます。

Returns:
memset() 関数は dest領域へのポインタ(==destそのもの)を返します。
int strcasecmp const char *  s1,
const char *  s2
 

2つの文字列を大小文字を無視して比較します。

strcasecmp() 関数は 2つの文字列 s1とs2を大小文字を無視して比較します。関数は 2つの文字列 s1とs2を大小文字を無視して比較します。

Returns:
strcasecmp() 関数は s1がs2より 小さい/一致/大きい 時、負の値/ゼロ/正の値 を返します。
char * strcat char *  dest,
const char *  src
 

2つの文字列を結合する

strcat() 関数は src 文字列を dest 文字列の末尾に追加します。dest 末尾の'\0'は重ね書きされ、srcのコピーが追加された後に文字列終端の'\0'が付加されます。文字列領域は重なり合っていてはいけません。dest 文字列は追加されるのに充分な領域が必要です。

Returns:
strcat() 関数は、結果を保持する文字列 dest へのポインタを返します。

char * strchr const char *  src,
int  val
 

文字列の中から指定の文字の位置を捜します。

strchr() 関数は 文字 val を文字列 src から探し、最初に見つかった位置をポインタで返します。

ここで云う "文字" とは、 "byte" を意味します - これらの関数はマルチバイト文字では使えません。

Returns:
strchr() 関数は 最初の一致した文字位置のポインタを返します。見つからない場合はNULLを返します。

int strcmp const char *  s1,
const char *  s2
 

2つの文字列を比較する

strcmp() 関数は s1とs2の2つの文字列を比較します。

Returns:
strcmp() 関数は s1がs2より 小さい/一致/大きい 時、負の値/ゼロ/正の値 を返します。

char * strcpy char *  dest,
const char *  src
 

文字列をコピーする

strcpy() 関数は src が指す文字列(終端の'\0'を含む)を、dest で指し示す文字配列にコピーします。文字列は重なり合っていてはなりません。コピー先文字列 dest は、コピーを受けられるだけ充分大きい必要があります。

Returns:
strcpy() 関数は コピー先文字列 dest へのポインタを返します。
Note:
strcpy() のコピー先が充分大きくない場合(プログラマがポカをした・怠けていて、コピー前にサイズをチェックしなかった)、何かが起こるかも知れません( ̄ー ̄)。固定長文字列をオーバーフローさせるのは、クラッカーのお気に入りテクニックです。

size_t strlcat char *  dst,
const char *  src,
size_t  siz
 

2つの文字列を結合する。

src 文字列を dst 文字列に、最大 siz だけ追加する。 strncat()と異なり、siz は dst のフルサイズ(NIL含む)です。dst には、最大 siz-1 文字が収められます。(sizが文字配列dstのサイズ以下である限りは)常に文字列終端はNUL文字となります。

返される値:
strlcat() 関数は strlen(src) + 小さい方(siz, strlen(initial dst)) を返します。retval >= sizなら、文字列の切り捨てが発生しています。

size_t strlcpy char *  dst,
const char *  src,
size_t  siz
 

文字列をコピーする。

src 文字列を、文字配列 dst に、最大 siz(終端NUL含む)だけコピーする。( siz != 0なら) 最大 siz-1 文字がコピーされます。

返される値:
strlcpy() 関数は srcの文字列長を返します。帰ってきた値 >= siz なら、文字列切り捨てが発生しています。

size_t strlen const char *  src  ) 
 

文字列の長さを調べる

strlen() 関数は 文字列 src の長さ(終端文字NULまでの収容文字数)を返します。終端文字NUL('\0')は数に含まれません。

返される値:
strlen() 関数は 文字列 src の長さを返します。

char * strlwr char *  string  ) 
 

文字列中の英文字を英小文字に変換

strlwr() 関数は、文字列中の英大文字 [A..Z] を英小文字に変換します。 英文字以外は変更されません。

返される値:
strlwr() 関数は、変換された文字列へのポインタを返します。

int strncasecmp const char *  s1,
const char *  s2,
size_t  len
 

2つの文字列を大小文字の違いを無視して比較します。

strncasecmp() 関数は strcasecmp() 関数に似ていますが、s1の最初の n 文字だけを比較する点が異なります。

Returns:
strncasecmp() 関数は s1がs2より 小さい/一致/大きい 時、負の値/ゼロ/正の値 を返します。
char * strncat char *  dest,
const char *  src,
size_t  len
 

2つの文字列を結合する。

strncat() 関数は strcat() 関数と似ていますが、src の最初の n 文字だけが dest に追加される点が異なります。

Returns:
strncat() 関数は 結果を保持する文字列 dest へのポインタを返します

int strncmp const char *  s1,
const char *  s2,
size_t  len
 

2つの文字列を比較する

strncmp() 関数は strcmp() と似ていますが、 最初の n 文字だけを比較します。

Returns:
strncmp() 関数は s1がs2より 小さい/一致/大きい 時、負の値/ゼロ/正の値 を返します。

char * strncpy char *  dest,
const char *  src,
size_t  len
 

文字列をコピーする。

strncpy() 関数は strcpy() と似ていますが、 srcの最初の n 文字だけをコピーします。srcのこの範囲に終端文字NULがなければ、dest に納められるコピー結果には適切なNUL終端文字がつけられません。

文字列srcの長さが n より小さい場合は、 dest の残り部分は NULで埋められます。

Returns:
strncpy() 関数は コピー先文字列 dest へのポインタを返します。
size_t strnlen const char *  src,
size_t  len
 

固定サイズ文字列の長さを決定する

strnlen 関数はsrc が指す文字列の文字数(終端文字NULを除く)を返します。ただし、最大 len の範囲内となります。こうして、strnlen はsrcの最初のlen 文字だけを見ます。src+len以降を見ることはありません。

返される値:
strnlen 関数は len より小さい値の場合は strlen(src) と同じ値を返しますが、先頭 len 文字内に NULがなければ len を返します。
char * strrchr const char *  src,
int  val
 

文字列内のある文字を検索する

strrchr() 関数は文字列 src 内で、val と値が一致する最後の文字を指すポインタを返します。

ここで「文字」というのは「バイト」を意味します。マルチバイト文字には対応できません。

返される値:
strrchr() 関数は文字列 src 内で、val と値が一致する最後の文字を指すポインタを返します。もし見つからなければ NULL を返します。

char * strrev char *  string  ) 
 

文字列を反転する

strrev() 関数は 文字列の順序を反転します。※"ABCD"→"DCBA"

返される値:
char * strsep char **  string,
const char *  delim
 

文字列をトークン解析します。

strsep() 関数は 文字列 *string が指し示す文字列の中で、文字列 delimに含まれる最初の文字(区切り文字)を捜し、そこを '\0'に置き換えます。区切り文字の次の文字位置を指すポインタが *string に保存されます。文字列がそこで終わりならNULLが保存されます。
※この関数は最初に与えられた文字列先頭ポインタ*stringを返すので、これはトークンで切り出された文字列を指すことになります。*stringには切り出した残りの文字列を指すポインタが入ります。

※文字列 *string = "123,456,789,,"に対し field_p=strsep(string,",");を繰り返し行えば、
1回目 field_p="123"  *string = "456,789,,"
2回目 field_p="456"  *string = "789,,"
3回目 field_p="789"  *string = ",,"
4回目 field_p=""     *string = ","
5回目 field_p=""     *string = ""
6回目 field_p=""     *string = NULL
6回目 field_p=NULL   *string = NULL 以後は同じ

返される値:
strtok_r() 関数は 関数コール前の*string 値を返します(切り取られたフィールド文字列のアドレスになる)。最初の*string がNULLなら、NULLが返されます。

char * strstr const char *  s1,
const char *  s2
 

部分文字列の位置を求める

strstr() 関数は s2 と合致する部分文字列を 文字列 s1 の中から捜します。文字列終端の'\0'は照合対象にはなりません。

返される値:
strstr() 関数は s1内で見つかったs2と一致する部分文字列の先頭アドレスを返します。見つからなかった場合はNULLを返します。s2文字列の文字列長が0なら、関数はs1を返すことになります。

char * strtok_r char *  string,
const char *  delim,
char **  last
 

文字列 s をトークン解析する

strtok_r は文字列 s をトークンに分解します。strtok_rの最初のコールは最初の引数として文字列を持っていなければなりません。続く呼び出しは最初の引数を NULL とします。トークンが区切り文字で終わっている場合は、区切り文字は'\0'で重ね書きされ、次の文字列へのポインタが次のstrtok_rのために保存されます。区切り文字指定文字列 delim は、呼び出し毎に異なっていても構いません。last はユーザーが用意すべき char* 型ポインタです。これは同じ文字列を解析中変更してはなりません。strtok_rはstrtok()のリエントラント版です。

返される値:
strtok_r() 関数は 次のトークンへのポインタを返します。トークンが見つからなかった場合はNULLを返します。

char * strupr char *  string  ) 
 

文字列中の英文字を英大文字に変換

strupr() 関数は文字列中の英小文字[a..z]を英大文字に変換します。英小文字以外の文字は変更されません。

返される値:
strupr() 関数は 変換された結果文字列へのポインタを返します。これは引数で渡した string と同じものです。


Automatically generated by Doxygen 1.4.1 on 23 Jan 2006.