| cppreference.com -> 標準 C 文字列 & 文字関数 -> 詳細 |
#include <stdlib.h> double atof( const char *文字列 ); |
atof()は文字列 をdouble型に変換して返す関数である。 文字列 は適正な数値で始まり、"E", "e"を除く、数値以外の文字に当たると終了する。サンプル:
x = atof( "42.0が答え" );
xには42.0が格納される。
関連トピック:#include <stdlib.h> int atoi( const char *文字列 ); |
atoi()は文字列 を数値に変換して返す関数である。 文字列は は数字で始まる必要がある。atoi()は数字以外の文字が現れたらそこで読み込みを中止する。サンプル:
i = atoi( "512.035" );
iには512が格納される。
関連トピック:#include <stdlib.h> long atol( const char *文字列 ); |
atol()は文字列 をlongに変換して返す関数である。 atol()はlongに変換することができない文字を見つけるまで文字列 から読み込む。サンプル:
x = atol( "1024.0001" );
xには1024Lが格納される。
関連トピック:#include <ctype.h> int isalnum( int 文字 ); |
isalnum()は与えられた文字 が数字がアルファベットであれば、ゼロでない値を返す。そうでない場合にはゼロを返す。
char c;
scanf( "%c", &c );
if( isalnum(c) )
printf( "アルファベットあるいは数字の'%c'が入力されました\n", c );
関連トピック:#include <ctype.h> int isalpha( int 文字 ); |
isalpha()は与えられた文字 がアルファベットであれば、ゼロでない値を返す。そうでない場合にはゼロを返す。
char c;
scanf( "%c", &c );
if( isalpha(c) )
printf( "アルファベットが入力されました\n" );
関連トピック:#include <ctype.h> int iscntrl( int 文字 ); |
iscntrl()は与えられた文字 がコントロール文字(0x1F-0x7F)であれば、ゼロでない値を返す。そうでない場合にはゼロを返す。
関連トピック:#include <ctype.h> int isdigit( int 文字 ); |
isdigit()は与えられた文字 が0から9の数値であれば、ゼロでない値を返す。そうでない場合にはゼロを返す。
char c;
scanf( "%c", &c );
if( isdigit(c) )
printf( "数値'%c'が入力されました\n", c );
関連トピック:#include <ctype.h> int isgraph( int 文字 ); |
isgraph()は与えられた文字 がスペースなどを除く表示可能な文字であれば、ゼロでない値を返す。そうでない場合にはゼロを返す。
関連トピック:#include <ctype.h> int islower( int 文字 ); |
islower()は与えられた文字 が英小文字であれば、ゼロでない値を返す。そうでない場合にはゼロを返す。
関連トピック:#include <ctype.h> int isprint( int 文字 ); |
isprint()は与えられた文字 が表示可能な文字(スペースを含む)であれば、ゼロでない値を返す。そうでない場合にはゼロを返す。
関連トピック:#include <ctype.h> int ispunct( int 文字 ); |
ispunct()は与えられた文字 がアルファベット、数字、スペースなどを除く表示可能な文字であれば、ゼロでない値を返す。そうでない場合にはゼロを返す。
関連トピック:#include <ctype.h> int isspace( int 文字 ); |
isspace()は与えられた文字 がスペースの一種(単独のスペース、タブ、垂直タブ、改行、行頭復帰、改ページなど)であれば、ゼロでない値を返す。そうでない場合にはゼロを返す。
関連トピック:#include <ctype.h> int isupper( int 文字 ); |
isupper()は与えられた文字 が英大文字であれば、ゼロでない値を返す。そうでない場合にはゼロを返す。
関連トピック:#include <ctype.h> int isxdigit( int 文字 ); |
isxdigit()は与えられた文字 が16進数の文字(a-f, A-F, 0-9)であれば、ゼロでない値を返す。そうでない場合にはゼロを返す。
関連トピック:#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" );
関連トピック:#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().
#include <string.h> void *memcpy( void *コピー先, const void *コピー元, size_t 長さ ); |
memcpy()は長さ の文字数のデータをコピー元 の配列からコピー先 の配列にコピーする。memcpy()はコピー先 を返す。コピー先 とコピー元 がオーバーラップしている場合の動作は未確定である。
関連トピック:#include <string.h> void *memmove( void *移動先, const void *移動元, size_t 長さ ); |
memmove()はmemcpy()とほぼ一緒であるが、 移動先 と移動元 がオーバーラップしている場合にも動作する。
関連トピック:#include <string.h> void *memset( void *バッファ, int 文字, size_t 長さ ); |
memset()は文字 をバッファ の最初の長さ 文字分コピーする 関数である。返値はバッファ である。memset()はメモリブロックを特定の値で初期化するのに便利である。サンプル:
memset( the_array, '\0', sizeof(the_array) );
これはthe_array のすべての配列の要素をゼロに初期化するのに効果的である。
関連トピック:#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 );
関連トピック:#include <string.h> char *strchr( const char *文字列, int 文字 ); |
strchr() は文字 が文字列 の中で最初に現れる位置のポインタを返す 関数である。もし文字 が見つからなかった場合にはNULLを返す。
関連トピック:#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" );
関連トピック:#include <string.h> int strcoll( const char *文字列1, const char *文字列2 ); |
strcoll()は文字列1 と文字列2 をstrcmpと同じように比較する。strcmpとstrcoll()が異なる点は、setlocale()関数で定義されたロケールを使用して比較されるということである。
#include <string.h> char *strcpy( char *コピー先, const char *コピー元 ); |
strcpy()はコピー元 からコピー先 へ、文字をコピーする関数である。 コピーされる際にはNULL終端文字も含めてコピーされる。返値はコピー先 である。
関連トピック:#include <string.h> size_t strcspn( const char *文字列1, const char *文字列2 ); |
strcspn()は文字列1 を検索し、文字列2 に含まれる文字のうちのどれかと同じ文字列があった場合にはそのインデックスを返す関数である。
関連トピック:#include <string.h> char *strerror( int エラー番号 ); |
trerror()はエラー番号 に割り当てられた、定義済みの文字列を返す関数である。
#include <string.h> size_t strlen( char *文字列 ); |
strlen()関数は文字列 の長さ(NULL終端文字の前までの文字数)を数えて 返す関数である。
関連トピック:#include <string.h> char *strncat( char *文字列1, const char *文字列2, size_t 文字数 ); |
strncat()は、長さ 文字の文字数の文字列2 を文字列1 の後ろに結合して、NULL終端文字を追加する関数である。その結果できた文字列が返値として返される。
関連トピック:#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終端文字が見つかったところで終わる。
関連トピック:#include <string.h> char *strncpy( char *コピー先, const char *コピー元, size_t 長さ ); |
strncpy()は長さ 文字の文字列をコピー元 からコピー先 へとコピーする関数である。もしコピー元 が長さ よりも文字かかった場合には'\0'の文字が残りの領域に書き込まれる。返値は結果の文字列である。
関連トピック:#include <string.h> char *strpbrk( const char *文字列1, const char *文字列2 ); |
strpbrk()は文字列2 に含まれる文字が最初に文字列1 に現れる位置のポインタを返す関数である。見つからなかった場合にはNULLが返される。
関連トピック:#include <string.h> char *strrchr( const char *文字列, int 文字 ); |
strrchr()は文字 が文字列 の中で最後に出てくる位置のポインタを返す関数である。見つからなかった場合にはNULLが返される。
関連トピック:#include <string.h> size_t strspn( const char *文字列1, const char *文字列2 ); |
strspn()は文字列1 の中で、文字列2 の中の文字以外の文字が出てくる最初の位置のインデックスを返す関数である。
関連トピック:#include <string.h> char *strstr( const char *文字列1, const char *文字列2 ); |
strstr()は文字列1 を検索して文字列2 が最初に出てくる位置のポインタを返す関数である。発見できなかった場合にはNULLを返す。
関連トピック:#include <stdlib.h> double strtod( const char *先頭文字, char **末尾文字 ); |
strtod()は先頭文字 から検索して最初に見つけたものをdoubleとして変換する。末尾文字 には先頭文字 の文字から左の位置のポインタがセットされる。 オーバーフローが発生した場合にはstrtod()はHUGE_VALか-HUGE_VALを返す。
関連トピック:#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"
関連トピック:#include <stdlib.h> long strtol( const char *変換文字列, char **終了位置, int 基数 ); |
strtol()は変換文字列 を読んでいき、基数を基数にしてlongに変換していく。変換不可能な文字を見つけた場合にはそのポインタを終了位置に格納する。もし変換結果がlongでは表現不可能ならばLONG_MAXかLONG_MINを返す。エラーが発生したらゼロが返される。
関連トピック:#include <stdlib.h> unsigned long strtoul( const char *変換文字列, char **終了位置, int 基数 ); |
strtoul()はstrtol()と非常に似ている。異なる点は、返値がlongではなくてunsigned longという点のみである。
関連トピック:#include <string.h> size_t strxfrm( char *文字列1, const char *文字列2, size_t 文字数 ); |
strxfrm()関数は文字列2 の最初の文字数 分の文字を変換して文字列1 に格納する。結果として、strcoll()を文字列1と返還前の文字列2に適用するのと、変換後にstrcmp()を実行するのは同じ結果になる。
関連トピック:#include <ctype.h> int tolower( int 文字 ); |
tolower()は文字 の小文字を返す関数である。
関連トピック:#include <ctype.h> int toupper( int 文字 ); |
toupper()は文字 の大文字を返す関数である。
関連トピック: