cppreference.com -> 標準 C 文字列 & 文字関数 -> 詳細

標準 C 文字列 & 文字関数


atof

文法:

  #include <stdlib.h>
  double atof( const char *文字列 );

atof()は文字列 をdouble型に変換して返す関数である。 文字列 は適正な数値で始まり、"E", "e"を除く、数値以外の文字に当たると終了する。サンプル:

    x = atof( "42.0が答え" );

xには42.0が格納される。

関連トピック:
atoi(), atol().

atoi

文法:

  #include <stdlib.h>
  int atoi( const char *文字列 );

atoi()は文字列 を数値に変換して返す関数である。 文字列は は数字で始まる必要がある。atoi()は数字以外の文字が現れたらそこで読み込みを中止する。サンプル:

    i = atoi( "512.035" );

iには512が格納される。

関連トピック:
atof() and atol().

atol

文法:

  #include <stdlib.h>
  long atol( const char *文字列 );

atol()は文字列 をlongに変換して返す関数である。 atol()はlongに変換することができない文字を見つけるまで文字列 から読み込む。サンプル:

    x = atol( "1024.0001" );

xには1024Lが格納される。

関連トピック:
atof(), atoi()

isalnum

文法:

  #include <ctype.h>
  int isalnum( int 文字 );

isalnum()は与えられた文字 が数字がアルファベットであれば、ゼロでない値を返す。そうでない場合にはゼロを返す。

    char c;
    scanf( "%c", &c );
    if( isalnum(c) )
      printf( "アルファベットあるいは数字の'%c'が入力されました\n", c );
関連トピック:
isalpha(), iscntrl(), isdigit(), isgraph(), isprint(), ispunct(), isspace()

isalpha

文法:

  #include <ctype.h>
  int isalpha( int 文字 );

isalpha()は与えられた文字 がアルファベットであれば、ゼロでない値を返す。そうでない場合にはゼロを返す。

    char c;
    scanf( "%c", &c );
    if( isalpha(c) )
      printf( "アルファベットが入力されました\n" );
関連トピック:
isalnum(), iscntrl(), isdigit(), isgraph(), isprint(), ispunct(), isspace().

iscntrl

文法:

  #include <ctype.h>
  int iscntrl( int 文字 );

iscntrl()は与えられた文字 がコントロール文字(0x1F-0x7F)であれば、ゼロでない値を返す。そうでない場合にはゼロを返す。

関連トピック:
isalnum(), isalpha(), isdigit(), isgraph(), isprint(), ispunct(), isspace()

isdigit

文法:

  #include <ctype.h>
  int isdigit( int 文字 );

isdigit()は与えられた文字 が0から9の数値であれば、ゼロでない値を返す。そうでない場合にはゼロを返す。

    char c;
    scanf( "%c", &c );
    if( isdigit(c) )
      printf( "数値'%c'が入力されました\n", c );
関連トピック:
isalnum(), isalpha(), iscntrl(), isgraph(), isprint(), ispunct(), isspace().

isgraph

文法:

  #include <ctype.h>
  int isgraph( int 文字 );

isgraph()は与えられた文字 がスペースなどを除く表示可能な文字であれば、ゼロでない値を返す。そうでない場合にはゼロを返す。

関連トピック:
isalnum(), isalpha(), iscntrl(), isdigit(), isprint(), ispunct(), isspace().

islower

文法:

  #include <ctype.h>
  int islower( int 文字 );

islower()は与えられた文字 が英小文字であれば、ゼロでない値を返す。そうでない場合にはゼロを返す。

関連トピック:
isupper()

isprint

文法:

  #include <ctype.h>
  int isprint( int 文字 );

isprint()は与えられた文字 が表示可能な文字(スペースを含む)であれば、ゼロでない値を返す。そうでない場合にはゼロを返す。

関連トピック:
isalnum(), isalpha(), iscntrl(), isdigit(), isgraph(), ispunct(), isspace().

ispunct

文法:

  #include <ctype.h>
  int ispunct( int 文字 );

ispunct()は与えられた文字 がアルファベット、数字、スペースなどを除く表示可能な文字であれば、ゼロでない値を返す。そうでない場合にはゼロを返す。

関連トピック:
isalnum(), isalpha(), iscntrl(), isdigit(), isgraph(), isprint(), isspace().

isspace

文法:

  #include <ctype.h>
  int isspace( int 文字 );

isspace()は与えられた文字 がスペースの一種(単独のスペース、タブ、垂直タブ、改行、行頭復帰、改ページなど)であれば、ゼロでない値を返す。そうでない場合にはゼロを返す。

関連トピック:
isalnum(), isalpha(), iscntrl(), isdigit(), isgraph(), ispunct().

isupper

文法:

  #include <ctype.h>
  int isupper( int 文字 );

isupper()は与えられた文字 が英大文字であれば、ゼロでない値を返す。そうでない場合にはゼロを返す。

関連トピック:
tolower()

isxdigit

文法:

  #include <ctype.h>
  int isxdigit( int 文字 );

isxdigit()は与えられた文字 が16進数の文字(a-f, A-F, 0-9)であれば、ゼロでない値を返す。そうでない場合にはゼロを返す。

関連トピック:
isalnum(), isalpha(), iscntrl(), isdigit(), isgraph(), ispunct(), isspace().

memchr

文法:

  #include <string.h>
  void *memchr( const void *バッファ, int 文字, size_t 文字数 );

memchr()は文字バッファ の最初の文字数 内に現れる最初の位置を返す。返値は文字 が最初に現れる位置のポインタである。NULLの場合には文字 が見つからなかったことを表している。サンプル:

    char names[] = "Alan Bob Chris X Dave";
    if( memchr(names,'X',strlen(names)) == NULL )
      printf( "'X'は見つからなかった\n" );
    else
      printf( "'X'が見つかった\n" );
関連トピック:
memcpy(), strstr().

memcmp

文法:

  #include <string.h>
  int memcmp( const void *バッファ1, const void *バッファ2, size_t 長さ );

memcmp()はバッファ1バッファ2 の最初の長さ 分の文字を比較する関数である。以下のような返値がある:

説明
0未満バッファ1はバッファ2よりも小さい
0バッファ1はバッファ2と等しい
0以上バッファ1はバッファ2よりも大きい

関連トピック:
memchr(), memcpy(), strcmp().


memcpy

文法:

  #include <string.h>
  void *memcpy( void *コピー先, const void *コピー元, size_t 長さ );

memcpy()は長さ の文字数のデータをコピー元 の配列からコピー先 の配列にコピーする。memcpy()はコピー先 を返す。コピー先コピー元 がオーバーラップしている場合の動作は未確定である。

関連トピック:
memmove().

memmove

文法:

  #include <string.h>
  void *memmove( void *移動先, const void *移動元, size_t 長さ );

memmove()はmemcpy()とほぼ一緒であるが、 移動先移動元 がオーバーラップしている場合にも動作する。

関連トピック:
memcpy().

memset

文法:

  #include <string.h>
  void *memset( void *バッファ, int 文字, size_t 長さ );

memset()は文字バッファ の最初の長さ 文字分コピーする 関数である。返値はバッファ である。memset()はメモリブロックを特定の値で初期化するのに便利である。サンプル:

    memset( the_array, '\0', sizeof(the_array) );

これはthe_array のすべての配列の要素をゼロに初期化するのに効果的である。

関連トピック:
memcmp(), memcpy(), memmove().

strcat

文法:

  #include <string.h>
  char *strcat( char *文字列1, const char *文字列2 );

strcat()は文字列2文字列1 の後ろに結合させる関数である。 返値は文字列1 である。サンプル:

    printf( "名前を入れてください: " );
    scanf( "%s", name );
    title = strcat( name, "さん" );
    printf( "こんにちわ, %s\n", title );
関連トピック:
strchr(), strcmp(), strcpy().

strchr

文法:

  #include <string.h>
  char *strchr( const char *文字列, int 文字 );

strchr() は文字文字列 の中で最初に現れる位置のポインタを返す 関数である。もし文字 が見つからなかった場合にはNULLを返す。

関連トピック:
strpbrk(), strspn(), strstr(), strtok()

strcmp

文法:

  #include <string.h>
  int strcmp( const char *文字列1, const char *文字列2 );

strcmp()は文字列1文字列2 を比較して以下の返値を返す。:

返値説明
0未満文字列1は文字列2よりも小さい
0文字列1は文字列2と等しい
0以上文字列1は文字列2よりも大きい

サンプル:

    printf( "名前を入れてください: " );
    scanf( "%s", name );
    if( strcmp( name, "Mary" ) == 0 )
      printf( "こんにちわ, Dr. Mary!\n" );
関連トピック:
memcmp(), strchr(), strcpy(), strncmp().

strcoll

文法:

  #include <string.h>
  int strcoll( const char *文字列1, const char *文字列2 );

strcoll()は文字列1文字列2strcmpと同じように比較する。strcmpとstrcoll()が異なる点は、setlocale()関数で定義されたロケールを使用して比較されるということである。


strcpy

文法:

  #include <string.h>
  char *strcpy( char *コピー先, const char *コピー元 );

strcpy()はコピー元 からコピー先 へ、文字をコピーする関数である。 コピーされる際にはNULL終端文字も含めてコピーされる。返値はコピー先 である。

関連トピック:
memcpy(), strchr(), strcmp(), strncmp(), strncpy()

strcspn

文法:

  #include <string.h>
  size_t strcspn( const char *文字列1, const char *文字列2 );

strcspn()は文字列1 を検索し、文字列2 に含まれる文字のうちのどれかと同じ文字列があった場合にはそのインデックスを返す関数である。

関連トピック:
strrchr(), strpbrk(), strstr(), strtok().

strerror

文法:

  #include <string.h>
  char *strerror( int エラー番号 );

trerror()はエラー番号 に割り当てられた、定義済みの文字列を返す関数である。


strlen

文法:

  #include <string.h>
  size_t strlen( char *文字列 );

strlen()関数は文字列 の長さ(NULL終端文字の前までの文字数)を数えて 返す関数である。

関連トピック:
memcpy(), strchr(), strcmp(), strncmp()

strncat

文法:

  #include <string.h>
  char *strncat( char *文字列1, const char *文字列2, size_t 文字数 );

strncat()は、長さ 文字の文字数の文字列2文字列1 の後ろに結合して、NULL終端文字を追加する関数である。その結果できた文字列が返値として返される。

関連トピック:
strcat(), strnchr(), strncmp(), strncpy().

strncmp

文法:

  #include <string.h>
  int strncmp( const char *文字列1, const char *文字列2, size_t 文字数 );

strncmp()は長さが文字数文字列1文字列2 を比較して以下の返値を返す。:

返値説明
0未満文字列1は文字列2よりも小さい
0文字列1は文字列2と等しい
0以上文字列1は文字列2よりも大きい

それぞれの文字列が長さ よりも短かった場合には、比較は最初にNULL終端文字が見つかったところで終わる。

関連トピック:
strcmp(), strnchr(), strncpy().

strncpy

文法:

  #include <string.h>
  char *strncpy( char *コピー先, const char *コピー元, size_t 長さ );

strncpy()は長さ 文字の文字列をコピー元 からコピー先 へとコピーする関数である。もしコピー元長さ よりも文字かかった場合には'\0'の文字が残りの領域に書き込まれる。返値は結果の文字列である。

関連トピック:
memcpy(), strchr(), strncat(), strncmp().

strpbrk

文法:

  #include <string.h>
  char *strpbrk( const char *文字列1, const char *文字列2 );

strpbrk()は文字列2 に含まれる文字が最初に文字列1 に現れる位置のポインタを返す関数である。見つからなかった場合にはNULLが返される。

関連トピック:
strspn(), strrchr(), strstr(), strtok()

strrchr

文法:

  #include <string.h>
  char *strrchr( const char *文字列, int 文字 );

strrchr()は文字文字列 の中で最後に出てくる位置のポインタを返す関数である。見つからなかった場合にはNULLが返される。

関連トピック:
strpbrk(), strspn(), strstr(), strtok()

strspn

文法:

  #include <string.h>
  size_t strspn( const char *文字列1, const char *文字列2 );

strspn()は文字列1 の中で、文字列2 の中の文字以外の文字が出てくる最初の位置のインデックスを返す関数である。

関連トピック:
strpbrk(), strrchr(), strstr(), strtok()

strstr

文法:

  #include <string.h>
  char *strstr( const char *文字列1, const char *文字列2 );

strstr()は文字列1 を検索して文字列2 が最初に出てくる位置のポインタを返す関数である。発見できなかった場合にはNULLを返す。

関連トピック:
strchr(), strcspn(), strpbrk(), strspn(), strtok(), strrchr()

strtod

文法:

  #include <stdlib.h>
  double strtod( const char *先頭文字, char **末尾文字 );

strtod()は先頭文字 から検索して最初に見つけたものをdoubleとして変換する。末尾文字 には先頭文字 の文字から左の位置のポインタがセットされる。 オーバーフローが発生した場合にはstrtod()はHUGE_VAL-HUGE_VALを返す。

関連トピック:
atof()

strtok

文法:

  #include <string.h>
  char *strtok( char *文字列1, const char *文字列2 );

strtok()は次のトークンを文字列1 から探してそのポインタを返す関数である。区切り文字は文字列2 に格納される、トークンが見つからなかった場合にはNULLを返す。文字列をトークンに変換するためには、strtok()を最初に呼び出すときには文字列1はトークン分割をする文字列を指していなければならない。それ以降はNULLを指定して呼び出す。すべてのトークン化が完了すると、返値はNULLとなる。

サンプル:

    char str[] = "now # is the time for all # good men to come to the # aid of their country";
    char delims[] = "#";
    char *result = NULL;

    result = strtok( str, delims );

    while( result != NULL ) {
        printf( "result is \"%s\"\n", result );
	      result = strtok( NULL, delims );
    }

上記のコードを実行すると以下の結果になる:

    result is "now "
    result is " is the time for all "
    result is " good men to come to the "
    result is " aid of their country"
関連トピック:
strchr(), strcspn(), strpbrk(), strrchr(), strspn().

strtol

文法:

  #include <stdlib.h>
  long strtol( const char *変換文字列, char **終了位置, int 基数 );

strtol()は変換文字列 を読んでいき、基数を基数にしてlongに変換していく。変換不可能な文字を見つけた場合にはそのポインタを終了位置に格納する。もし変換結果がlongでは表現不可能ならばLONG_MAXLONG_MINを返す。エラーが発生したらゼロが返される。

関連トピック:
atol().

strtoul

文法:

  #include <stdlib.h>
  unsigned long strtoul( const char *変換文字列, char **終了位置, int 基数 );

strtoul()はstrtol()と非常に似ている。異なる点は、返値がlongではなくてunsigned longという点のみである。

関連トピック:
strtol()

strxfrm

文法:

  #include <string.h>
  size_t strxfrm( char *文字列1, const char *文字列2, size_t 文字数 );

strxfrm()関数は文字列2 の最初の文字数 分の文字を変換して文字列1 に格納する。結果として、strcoll()文字列1と返還前の文字列2に適用するのと、変換後にstrcmp()を実行するのは同じ結果になる。

関連トピック:
strcmp(), strcoll(),

tolower

文法:

  #include <ctype.h>
  int tolower( int 文字 );

tolower()は文字 の小文字を返す関数である。

関連トピック:
toupper()

toupper

文法:

  #include <ctype.h>
  int toupper( int 文字 );

toupper()は文字 の大文字を返す関数である。

関連トピック:
tolower()