C言語学習ポータル(無料版) 学習コンテンツ 関数リファレンス

C言語 標準ライブラリ関数リファレンス(130件)

よく使う標準ライブラリ関数を、ヘッダ・書式・使用例・つまずきやすい注意点つきでまとめました。関数名を選ぶと詳しい使い方のページへ移れます。

関数名から探す

abort abs aligned_alloc assert atan2 atexit atof atoi bsearch calloc cbrt ceil ckd_add ckd_mul ckd_sub clock cos difftime div exit exp fabs fclose feof ferror fflush fgetc fgets floor fmod fopen fprintf fputc fputs fread free free_aligned_sized free_sized fscanf fseek ftell fwrite getchar getenv gets_s hypot isalnum isalpha iscntrl isdigit islower ispunct isspace isupper isxdigit labs localtime log log10 log2 malloc memcmp memcpy memmove memset memset_explicit mktime offsetof perror pow printf putchar puts qsort rand realloc remove rename rewind round scanf setvbuf sin snprintf sprintf sqrt srand sscanf stdc_bit_ceil stdc_bit_floor stdc_bit_width stdc_count_ones stdc_count_zeros stdc_has_single_bit stdc_leading_zeros stdc_trailing_zeros strcat strchr strcmp strcoll strcpy strcspn strdup strerror strlen strncat strncmp strncpy strndup strpbrk strrchr strspn strstr strtod strtok strtol strtold strtoul system tan time timespec_get tmpfile tolower toupper ungetc va_arg va_end va_start vprintf

入出力(32件)

fclose開いたストリームを閉じ、バッファに残っているデータをフラッシュしてからファイルとの関連付けを解除する。開いたファイルは処… feof直前の入力操作がファイル終端に達したかどうかを調べる。まだ終端に達していないのに次の読み取りを先読みして初めてEOFにな… ferror直前のストリーム操作でエラーが発生したかどうかを調べる。feofと対で使い、読み込みが止まった理由が終端かエラーかを区別… fflush出力ストリームのバッファ内容を実際の出力先へ書き出す。プログラム途中でログを即座に反映させたい時や、fclose前に明示… fgetcストリームから1文字読み取る。ファイル終端やエラー時はEOFを返す。getchar()はfgetc(stdin)と等価で… fgetsストリームから最大n-1文字を1行読み取り、末尾に\0を付けてバッファへ格納する安全な入力関数。改行文字も含めて読み取る… fopenファイルを開いてストリームを得る。モード文字列("r"読込/"w"書込/"a"追記、"b"でバイナリ)を指定する。失敗時… fprintf書式に従って指定したストリームへ出力する。printfのストリーム指定版で、ファイルやログへの整形出力によく使う。標準エ… fputcストリームへ1文字書き込む。putchar(c)はfputc(c, stdout)と等価で、1バイトずつファイルへ書き出… fputs文字列をストリームへ書き出す。putsと違って改行は自動で付加されないため、必要なら自分で\nを書く。ファイルへのテキス… freadストリームから固定サイズのデータブロックを複数個読み込む。バイナリファイルの読み込みに使い、戻り値は実際に読み込めた要素… fscanfストリームから書式に従って値を読み取る。ファイルから構造化データを読み込む際に使うが、区切り文字が想定外だと簡単に同期が… fseekストリームの読み書き位置を移動する。whenceにSEEK_SET(先頭から)/SEEK_CUR(現在位置から)/SEE… ftellストリームの現在の読み書き位置を取得する。fseekと組み合わせてファイルサイズの取得や位置の保存・復元に使う。失敗時は… fwriteメモリ上のデータブロックを指定個数だけストリームへ書き込む。バイナリ出力の基本関数で、構造体配列をそのままファイル化する… getchar標準入力から1文字読み取る。ファイル終端ではEOFを返すため、戻り値はint型で受け取る必要がある。char型で受けると… gets_s標準入力から1行を安全に読み取る。旧来のgetsはバッファサイズを指定できず脆弱性の温床だったためC11で規格から削除さ… perror直前のライブラリ関数呼び出しで設定されたerrnoをもとに、指定文字列に続けてエラー内容を人間が読める形で標準エラー出力… printf書式指定文字列に従って可変個の引数を標準出力へ整形して出力する。%dや%sなどの変換指定子と引数の型が一致していないと未… putchar1文字を標準出力へ書き出す。内部的にはputc(c, stdout)と等価で、ループ内で1文字ずつ出力する処理に向く軽量… puts文字列と改行を1つ標準出力へ書き出す関数。printf("%s\n", s)より単純で高速に書ける。書式指定を使わないた… remove指定したファイルを削除する。成功すると0、失敗すると0以外を返す。削除操作は取り消せないため、実行前に本当に消してよいフ… renameファイル(またはディレクトリ)の名前を変更・移動する。移動先が既存のファイルと衝突する場合の挙動は処理系依存なので、事前… rewindストリームの読み書き位置を先頭へ戻し、エラー・EOF状態もクリアする。fseek(fp, 0, SEEK_SET)とほぼ… scanf標準入力から書式に従って値を読み取り、対応する変数へ格納する。各変換指定子には&を付けたポインタを渡す必要があり、渡し忘… setvbufストリームのバッファリング方式(_IOFBF全バッファ/_IOLBF行バッファ/_IONBF無バッファ)とバッファ領域を… snprintf書式に従って結果を文字列バッファへ書き込むが、書き込み先のサイズを指定できるためsprintfより安全。バッファが足りな… sprintf書式に従って結果を文字列バッファへ書き込む。バッファの大きさを指定できないため、書き込み量が確保サイズを超えるとバッファ… sscanf文字列から書式に従って値を読み取る。ファイルや標準入力を経由せず、既にメモリ上にある文字列を解析したいときに使う。簡易的… tmpfile自動的に一意な名前を生成して一時ファイルを開く。プログラム終了時(またはfclose時)に自動で削除される。作業用の中間… ungetc読み取った1文字をストリームへ押し戻し、次の読み取りで再び取得できるようにする。字句解析で「1文字先読みしてから判断する… vprintfva_listで受け取った可変長引数を使って書式出力を行う。自作のログ関数など、可変長引数を別の関数へそのまま中継したい…

文字列(22件)

memcmpメモリ領域を指定バイト数だけバイト単位で比較する。構造体や配列全体が等しいかどうかを一括で調べたい時に使われる、文字列以… memcpyメモリ領域を指定バイト数だけコピーする。文字列に限らずあらゆるデータのコピーに使えstrcpyより高速だが、終端\0の概… memmoveメモリ領域を指定バイト数だけコピーする点はmemcpyと同じだが、コピー元とコピー先が重なっていても内部で考慮され正しく… memsetメモリ領域の各バイトを指定した値で埋める。配列やバッファのゼロクリア、構造体の初期化など、あらゆる場面で使われる定番関数… memset_explicitmemsetと同様にメモリを指定値で埋めるが、コンパイラの最適化によって「無駄な書き込み」として消去されないことが保証さ… strcatコピー先文字列の末尾に別の文字列を連結する。コピー先バッファの残り容量を確認しないため、strcpy同様にオーバーフロー… strchr文字列内で指定した文字が最初に現れる位置へのポインタを返す。見つからなければNULLを返す。終端の\0自体も検索対象とし… strcmp2つの文字列を辞書順に比較する。等しければ0、s1がs2より小さければ負、大きければ正を返す。文字列の内容比較には==で… strcoll現在のロケール設定に従って2つの文字列を比較する。日本語や各国語の並び順(照合順序)を考慮した比較が必要な場合に、単純な… strcpy文字列をコピー先バッファへコピーする。コピー先のサイズを一切考慮しないため、コピー元がコピー先より長いとバッファオーバー… strcspn文字列の先頭から、指定した文字集合に含まれない文字が連続して何文字続くかを返す。区切り文字が現れるまでの長さを調べたい時… strdup文字列を複製し、複製先の領域をmallocで新たに確保して返す。C23で標準化されたが、以前からPOSIXや多くの処理系… strerrorエラー番号(errnoの値)に対応するエラーメッセージ文字列を返す。perrorが内部で使っているのと同じ変換で、メッセ… strlen文字列の終端\0を除いた文字数(バイト数)を返す。文字列の長さ分だけ先頭から走査するためO(n)であり、ループの条件式な… strncat連結する文字数の上限を指定できるstrcatの安全版。ただし上限は「追加する文字数」であり、コピー先の残り容量そのもので… strncmp先頭から最大n文字だけを比較するstrcmpの派生版。プレフィックス一致の判定や、固定長フィールドの比較などによく使われ… strncpy最大n文字までコピーするstrcpyの安全版だが、コピー元がn文字以上あると終端の\0が付かず、逆に短いと残りが\0で埋… strpbrk文字列の中から、指定した文字集合のいずれかが最初に現れる位置を探す。複数の区切り文字候補のうち最初に出てくるものを探した… strrchr文字列内で指定した文字が最後に現れる位置へのポインタを返す。ファイルパスから拡張子や最後のディレクトリ区切りを探す用途に… strspn文字列の先頭から、指定した文字集合に含まれる文字が連続して何文字続くかを返す。入力のトリムやトークン境界判定の下地として… strstr文字列の中から部分文字列が最初に現れる位置を探す。見つかればその先頭アドレス、無ければNULLを返す。文字列中の部分一致… strtok文字列を区切り文字で分割する。内部に静的な状態を持ち、渡した文字列自体を書き換えながら破壊的にトークンを取り出すため、マ…

メモリ(1件)

aligned_alloc指定したアライメント境界に合わせてメモリを確保する。SIMD命令やDMA転送など、特定のバイト境界に配置されたメモリが必…

数学(17件)

atan22つの引数(y, x)から、原点からの角度をラジアンで計算する。atan(y/x)と違い象限を正しく判定でき、xが0でも… cbrt立方根(3乗根)を計算する。pow(x, 1.0/3.0)と違い負の値にも正しく対応し(実数の立方根は負の数にも存在する… ceil引数以上の最小の整数値をdouble型で返す(正の方向への丸め)。floorと対になる関数で、ページ数の計算(切り上げ除… cosラジアン単位の角度に対する余弦(コサイン)を計算する。sinと同様に引数は必ずラジアンで渡す必要があり、度数法との変換を… expeの累乗(自然指数関数)を計算する。logの逆関数で、指数的な増加を扱うシミュレーションや確率計算などに使われる基本的な… fabs浮動小数点数の絶対値を返す。整数用のabsとは別の関数であり、double型に対しては必ずこちらを使う。混同して整数用の… floor引数以下の最大の整数値をdouble型で返す(切り捨てではなく負の方向への丸め)。負の数では-1.5が-2.0になる点に… fmod浮動小数点数同士の剰余を計算する。整数の%演算子は浮動小数点数に使えないため、小数を含む値の剰余を求めたい時にこの関数を… hypot直角三角形の斜辺の長さ(sqrt(x*x + y*y))を、オーバーフローやアンダーフローを避けつつ正確に計算する。2点… log自然対数(底がe)を計算する。0以下の値を渡すと定義域エラーになり、0では-HUGE_VAL、負ではNaNが返る処理系が… log10常用対数(底が10)を計算する。桁数の判定(値の10進桁数をfloor(log10(x))+1で求める等)や、デシベル計… log22を底とする対数を計算する。ビット幅やハッシュテーブルのサイズなど、2の累乗に関連する計算や情報量(ビット数)の見積もり… pow累乗(baseのexp乗)を計算する。整数の累乗を計算するだけでも内部的には対数・指数を使う一般的な実装であることが多く… round四捨五入した整数値をdouble型で返す(0からの距離で丸める、いわゆる「五捨五入」ではなくJIS方式の四捨五入に近い)… sinラジアン単位の角度に対する正弦(サイン)を計算する。度数法の角度を渡す場合は角度 * M_PI / 180でラジアンに変… sqrt非負の実数の平方根を計算する。負の値を渡すと定義域エラーとなり、処理系によってはNaNを返しつつerrnoにEDOMが設… tanラジアン単位の角度に対する正接(タンジェント)を計算する。90度(π/2ラジアン)付近では値が急激に発散するため、浮動小…

ユーティリティ(5件)

assert式が偽の場合にプログラムを異常終了させ、ファイル名・行番号・式の内容を表示するデバッグ用マクロ。NDEBUGマクロを定義… offsetof構造体の先頭から特定メンバーまでのバイトオフセットを取得するマクロ。汎用データ構造(イントリュージブリスト等)の実装や、… va_arg可変長引数リストから、指定した型で次の1つの引数を取り出すマクロ。呼び出し側が実際に渡した引数の型と、ここで指定した型が… va_endva_startで始めた可変長引数リストの利用を終了するマクロ。多くの処理系では実質何もしないが、規格上はva_star… va_start可変長引数関数の内部で、可変部分の引数リストへのアクセスを開始するマクロ。最後の固定引数の名前を渡して初期化する。使用後…

時間(6件)

clockプログラム開始からのCPU使用時間をclock_t型で取得する。実際の経過時間(壁時計時間)ではなくCPU時間である点に… difftime2つのtime_t値の差を秒数(double型)で計算する。time_t同士を直接引き算する処理系依存のコードより移植性… localtimetime_t型のカレンダー時刻を、実行環境のタイムゾーンに基づいたstruct tm(年月日時分秒)へ分解する。戻り値は… mktimestruct tm(年月日時分秒に分解されたローカル時刻)をtime_t型のカレンダー時刻へ変換する。範囲外の値(例:1… time現在のカレンダー時刻をtime_t型(多くの処理系で1970年1月1日からの経過秒数)で取得する。引数にポインタを渡すと… timespec_getナノ秒精度の時刻をstruct timespecへ取得する。timeより高精度な時刻取得が必要な場合に使う関数で、C11…

文字判定(11件)

isalnum文字がアルファベットまたは数字かどうかを判定する。isalpha(c) || isdigit(c)と同等の判定を1回の呼… isalpha文字がアルファベット(A-Z, a-z)かどうかを判定する。引数にはunsigned charにキャストした値かEOFを… iscntrl文字が制御文字(改行・タブ・NUL・ESCなど、印字されない文字)かどうかを判定する。テキスト中の不可視文字を検出したり… isdigit文字が10進数字(0-9)かどうかを判定する。ロケールに依存せず常にASCIIの0-9のみを対象とする点が、他の一部の分… islower文字が小文字アルファベット(a-z)かどうかを判定する。isupperと対になる関数で、パスワードの複雑さチェックなど文… ispunct文字が印字可能な記号(英数字・空白以外の記号類、!や,など)かどうかを判定する。入力の記号除去やパスワードの記号を含むか… isspace文字が空白類(スペース、タブ、改行、復帰、垂直タブ、改ページ)かどうかを判定する。入力のトリムや、単語の区切り判定に頻繁… isupper文字が大文字アルファベット(A-Z)かどうかを判定する。文字の種類の分岐処理や、大文字を含むかのバリデーションチェックに… isxdigit文字が16進数字(0-9, a-f, A-F)かどうかを判定する。16進文字列のパースや、色コード・\xエスケープシーケ… tolower大文字アルファベットを対応する小文字へ変換する。toupperと対になる関数で、対象外の文字はそのまま返すため、大文字小… toupper小文字アルファベットを対応する大文字へ変換する。対象外の文字を渡した場合はそのまま同じ値を返すため、事前にisalpha…

標準ライブラリ(22件)

abortプログラムを異常終了させる。atexitで登録した関数は呼び出されず、シグナルSIGABRTを発生させて即座に終了する。… absint型整数の絶対値を返す。浮動小数点数には使えず、doubleにはfabs、longにはlabsなど型ごとに別の関数を… atexitプログラム正常終了時(exit呼び出しまたはmainからのreturn)に自動的に呼び出される関数を登録する。後片付け処… atof文字列をdouble型の浮動小数点数へ変換する。atoiと同様にエラー検出ができないため、精度や妥当性を確認したい場合は… atoi文字列をint型の整数へ変換する。変換できない場合の挙動が未定義でエラー検出ができないため、エラーチェックが必要な信頼で… bsearchソート済み配列に対して二分探索を行う汎用関数。qsortと同じ比較関数を使い、対象データを高速に探索する。配列が未ソート… calloc指定個数×指定サイズのメモリをヒープから確保し、全バイトを0で初期化して返す。mallocと違い内容が確定しているため、… div整数の除算と剰余を同時に計算し、商(quot)と余り(rem)をまとめたdiv_t構造体で返す。/と%を別々に書くより効… exitプログラムを直ちに終了させる。atexitで登録した関数を呼び出し、開いているストリームをフラッシュ・クローズしてからO… freemalloc/calloc/reallocで確保したメモリ領域を解放する。解放後は同じポインタを再利用してはいけない(必… getenv環境変数の値を取得する。見つからなければNULLを返す。設定ファイルのパスやAPIキーなど、実行環境ごとに変わる値を取得… labslong型整数の絶対値を返す。absのlong版で、intの表現範囲を超える可能性のある値の絶対値を安全に求めたい時に使… malloc指定バイト数のメモリ領域をヒープから動的に確保し、先頭アドレスを返す。確保した内容は初期化されない(不定値)ため、必要な… qsort配列を汎用的にソートする関数。要素の型を問わず、比較関数を関数ポインタで渡すことで任意の基準で並べ替えられる。比較関数は… rand0からRAND_MAXまでの疑似乱数を1つ返す。生成される数列はsrandで指定したシードによって決まり、同じシードなら… realloc既に確保済みのメモリ領域のサイズを変更する。拡張・縮小いずれも可能で、内容は元のサイズ分だけ保持される。戻り値のアドレス… srandrandが生成する疑似乱数列の種(シード)を設定する。同じシードを与えると毎回同じ乱数列になるため、実行毎に変えたい場合… strtod文字列をdouble型浮動小数点数へ変換する。strtol同様に変換の終端位置を取得できるためエラー検出が可能で、ato… strtol文字列を任意の基数(2〜36、0で自動判定)でlong型整数へ変換する。変換できなかった位置をendptrで取得できるた… strtold文字列をlong double型の浮動小数点数へ変換する。strtodより高精度な値が必要な科学技術計算などの数値計算で… strtoul文字列を任意の基数でunsigned long型整数へ変換する。負符号-を渡すと2の補数表現に基づくラップアラウンドが起… systemOSのシェルを介して外部コマンドを実行する。コマンド文字列にユーザー入力をそのまま連結すると任意コマンド実行(コマンドイ…

C23(14件)

ckd_add整数の加算をオーバーフローの有無を検出しながら実行するC23の型総称マクロ。結果をresultへ格納し、オーバーフローし… ckd_mul整数の乗算をオーバーフローの有無を検出しながら実行するC23の型総称マクロ。配列サイズなどの計算でオーバーフローすると重… ckd_sub整数の減算をオーバーフローの有無を検出しながら実行するC23の型総称マクロ。ckd_addと同じ使い方で、結果とオーバー… free_aligned_sizedaligned_allocで確保したメモリを、アライメントとサイズの両方を伝えて解放するC23の関数。free_size… free_sized解放するメモリのサイズを事前に伝えて解放するC23の新しいfree。サイズ情報をアロケータに渡すことで、内部実装によって… stdc_bit_ceil指定値以上で最小の2の累乗を返すC23の型総称関数。ハッシュテーブルやバッファのサイズを2の累乗に切り上げたい時に使われ… stdc_bit_floor指定値以下で最大の2の累乗を返すC23の型総称関数。stdc_bit_ceilと対になる関数で、値を2の累乗に切り下げた… stdc_bit_width符号無し整数の値を表現するのに必要な最小ビット数を返すC23の型総称関数。0を渡すと0を返す。値の2進数での桁数を求めた… stdc_count_ones符号無し整数のビット表現で1になっているビットの個数(ポピュレーションカウント)を数えるC23の型総称関数。ハミング距離… stdc_count_zeros符号無し整数のビット表現で0になっているビットの個数を数えるC23の型総称関数。stdc_count_onesの逆で、ビ… stdc_has_single_bit符号無し整数の値がちょうど1ビットだけ立っている(2の累乗である)かどうかを判定するC23の型総称関数。値が2の累乗かど… stdc_leading_zeros符号無し整数の最上位ビットから連続する0の個数を数えるC23の型総称関数(マクロ)。ビット幅の判定やビット演算を使った最… stdc_trailing_zeros符号無し整数の最下位ビットから連続する0の個数を数えるC23の型総称関数。値が2の何乗で割り切れるかの判定や、ビット走査… strndup文字列の先頭から最大n文字を複製し、新たに確保した領域へコピーする。コピー元がn文字より短ければそこで打ち切り、必ず終端…

もっと先へ:ポインタ・メモリ・ファイル入出力・セキュアコーディングを含む全26トラックと、段位検定・模試のフルセットは完全版に収録しています。

完全版(BOOTH)を見る

📚 姉妹教材:手を動かして覚える Linux 教材 — Linuxとインフラの仕組みを地図で学ぶ

Web版 / BOOTH