ITメモ
C言語 / Programming Language C
開発環境 / Development Environment
【Mac】Xcode【Win】Visual Stadio
基礎 / Basic
About C言語書式コメントコンパイルとリンクメイクファイル / Makefileヘッダファイル変数定数型 / Type配列 / Arrayポインタ / Pointer演算子 / Operator制御文 / Control Statement関数指定子 / 修飾子構造体と共用体 / Structure & Unionプリプロセッサ / PreprocessorthisキーワードTypedef
入出力 / Input & Output
入出力入力フォーマット指定子出力フォーマット指定子「printf」関数を使って文字を出力・表示させる方法「printf_s」関数を使って文字を出力・表示させる方法「scanf」関数を使って入力させる方法「scanf_s」関数を使って入力させる方法「getchar」関数を使って「1文字」だけ入力させる方法「gets」関数を使って「文字列」を入力させる方法
文字列 / String
文字列 / String「snprintf」関数で「配列」に文字列を書き込む方法
ネットワーク / Network
memset - メモリブロックのセット
メモリー管理
メモリー
オペレーション / Operation
ファイルを操作をする方法コマンドラインプログラム / Command-Line Programプロセス / Processソケット通信 / Socket Communication
用語集 / Glossary
サブルーチン / Subroutineスタックとキュー / Stack & Cueスレッド / Thread
C言語標準ライブラリ(ヘッダファイル)
C言語標準ライブラリ【assert.h】 - 診断機能【complex.h】 - 複素数計算【ctype.h】 - 文字操作【errno.h】 - エラー【fenv.h】 - 浮動小数点環境【float.h】 - 浮動小数点型の特性【inttypes.h】 - 整数型の書式の変換【iso646.h】 - 代替つづり(Alternate spellings)【limits.h】 - 整数型の大きさ【locale.h】 - 文化圏固有操作【math.h】 - 数学【setjmp.h】 - 非局所分岐【signal.h】 - シグナル操作【stdalign.h】 - アライメント【stdarg.h】 - 可変個数の実引数【stdatomic.h】 - アトミック操作【stdbool.h】 - 論理型および論理値【stddef.h】 - 共通の定義【stdint.h】 - 整数型【stdio.h】 - 入出力【stdlib.h】 - 一般ユーティリティ【stdnoreturn.h】 - _Noreturn【string.h】 - 文字列操作【tgmath.h】 - 型総称数学関数(Type-generic math)【threads.h】 - マルチスレッド【time.h】 - 日付及び時間【uchar.h】 - Unicodeユーティリティ【wchar.h】 - 多バイトおよびワイド文字拡張ユーティリティ【wctype.h】 - ワイド文字種分類およびワイド文字大文字小文字変換ユーティリティ
C言語ライブラリ(ヘッダファイル)
C言語ヘッダファイル【winsock.h】





【C言語】標準ライブラリ【stdlib.h】 - 一般ユーティリティ

【C言語】
標準ライブラリ【stdlib.h】
一般ユーティリティ






一般ユーティリティ <stdlib.h>

一般ユーティリティに関する型・マクロ・関数の宣言定義。

div_tint 型の商と剰余を格納する構造体
ldiv_tlong 型の商と剰余を格納する構造体
MB_CUR_MAX設定されているロケールにおけるマルチバイト文字の最大バイト数を表すマクロ
RAND_MAXrand 関数が返す擬似乱数の最大値
abortプログラムの異常終了
absint 型の絶対値
atexit終了時関数の登録
atof文字列から double 型への変換
atoi文字列から int 型への変換
atol文字列から long 型への変換
bsearchバイナリサーチ
callocメモリブロックの割り付けとクリア
divint 型どうしの商と剰余
exitプログラムの終了
freeメモリブロックの解放
getenv環境変数の参照
labslong 型の絶対値
ldivlong 型どうしの商と剰余
mallocメモリブロックの割り付け
mblenマルチバイト文字の構成バイト数
mbstowcsマルチバイト文字列からワイド文字列への変換
mbtowcマルチバイト文字からワイド文字への変換
qsortクイックソート(ただし、仕様上はソートを行うとあるだけで「クイックソートによる」とは書かれていない)
rand擬似乱数
reallocメモリブロックの再割り付け
srand乱数種の設定
strtod文字列から double 型への変換
strtol文字列から long 型への変換(基数指定可)
strtoul文字列から unsigned long 型への変換(基数指定可)
systemコマンドプロセッサの呼び出し
wcstombsワイド文字列からマルチバイト文字列への変換
wctombワイド文字列からマルチバイト文字列への変換



汎用 <stdlib.h>


特に分類されない汎用的な関数の集まり。
メモリ関連、プロセス関連、変換など。




[ malloc ]  : メモリを動的に確保する。
関数型 : void *malloc(size_t n);
引数  : 確保するメモリサイズ
戻り値 : 確保したメモリのアドレス。確保できなかった場合はNULL。
機能  : メモリを動的に確保する。
[ calloc ]  : メモリを動的に確保する。確保したメモリはゼロクリアされる。
関数型 : void *calloc(size_t int nelem, size_t elsize);
引数  : 要素数、1要素のサイズ
戻り値 : 確保したメモリのアドレス。確保できなかった場合はNULL。
機能  : メモリを動的に確保する。確保したメモリはゼロクリアされる。
注意  : ゼロクリアされるからバグが減ると勘違いしないように。

[ realloc ]  : 確保したメモリサイズを変更する。中身は維持される。
関数型 : void *realloc(void *ptr, size_t size);
引数  : 確保したメモリのアドレス、新しいメモリサイズ。
戻り値 : 確保したメモリのアドレス。確保できなかった場合はNULL。
機能  : 確保したメモリサイズを変更する。中身は維持される。
補足  : メモリアドレスが変更される可能性があることに注意。

[ free ]  : 動的に確保したメモリを解放。
関数型 : void free(void *p);
引数  : 確保したメモリのアドレス
機能  : 動的に確保したメモリを解放。

[ abs ]  : 絶対値を求める。
関数型 : int abs(int n);
引数  : 数値
戻り値 : 数値の絶対値
機能  : 絶対値を求める。

[ labs ]  : 絶対値を求める。
関数型 : long labs(long n);
引数  : 数値
戻り値 : 数値の絶対値
機能  : 絶対値を求める。

[ atof ]  : 数字を含む文字列を実数値に変換。
関数型 : double atof(const char *s);
引数  : 数字を含む文字列
戻り値 : 変換後の値。変換できない場合は0。
機能  : 数字を含む文字列を実数値に変換。

[ atoi ]  : 数字を含む文字列を整数値に変換。
関数型 : int atoi(const char *s);
引数  : 数字を含む文字列
戻り値 : 変換後の値。変換できない場合は0。
機能  : 数字を含む文字列を整数値に変換。

[ atol ]  : 数字を含む文字列を整数値に変換。
関数型 : long atol(const char *s);
引数  : 数字を含む文字列
戻り値 : 変換後の値。変換できない場合は0。
機能  : 数字を含む文字列を整数値に変換。

[ strtod ]  : 数字を含む文字列を実数値に変換。
関数型 : double strtod(const char *s, char **endptr);
引数  : 数字を含む文字列、終了位置のアドレス
戻り値 : 変換後の値。変換できない場合は0。
機能  : 数字を含む文字列を実数値に変換。

[ strtol ]  : 数字を含む文字列を整数値に変換。
関数型 : long strtol(const char *s, char **endptr, int base);
引数  : 数字を含む文字列、終了位置のアドレス、数値の基数(2進数や16進数)
戻り値 : 変換後の値。変換できない場合は0。
機能  : 数字を含む文字列を整数値に変換。

[ strtoul ]  : 数字を含む文字列を符号無し整数値に変換。
関数型 : unsigned long strtoul(const char *s, char **endptr, int base);
引数  : 数字を含む文字列、終了位置のアドレス、数値の基数(2進数や16進数)
戻り値 : 変換後の値。変換できない場合は0。
機能  : 数字を含む文字列を符号無し整数値に変換。

[ div ]  : 商と余りを同時に計算。
関数型 : div_t div(int num, int denom);
引数  : 割られる数、割る数。
戻り値 : 割り算の結果。
機能  : 商と余りを同時に計算。
構造体 : div_t構造体 int quot 商、 int rem 余り。
補足  : この関数より、演算子 / や % を使うことをお勧めする。

[ ldiv ]  : 商と余りを同時に計算。
関数型 : ldiv_t ldiv(long num, long denom);
引数  : 割られる数、割る数。
戻り値 : 割り算の結果。
機能  : 商と余りを同時に計算。
構造体 : ldiv_t構造体 long quot 商、 long rem 余り。
補足  : この関数より、演算子 / や % を使うことをお勧めする。

[ rand ]  : 乱数を得る。
関数型 : int rand(void);
戻り値 : ランダムな値。範囲は処理系による。
機能  : 乱数を得る。
使用法 : #define RANDOM(MIN,MAX) ((MIN)+(int)(rand()/(float)RAND_MAX*((MAX)-(MIN)+1)))
     とすれば、min ~ max 間の乱数を得ることが出来る。

[ srand ]  : 乱数系列の初期値を与える。
関数型 : void srand(unsigned int seed);
引数  : 乱数系列の初期値。
機能  : 乱数系列の初期値を与える。
使用法 : srand((unsigned int)time(0)); が定番である。

[ exit ]  : プログラムを終了させる。
関数型 : void exit(int n);
引数  : 終了コード。一般に EXIT_SUCCESS は正常終了、EXIT_FAILURE は異常終了。
機能  : プログラムを終了させる。

[ abort ]  : プログラムを異常終了させる。
関数型 : void abort(void);
機能  : プログラムを異常終了させる。
補足  : エラーが発生したときの終了に使用する。

[ atexit ]  : プログラム終了時に実行する関数を登録する。
関数型 : int atexit(void (*func)(void));
引数  : 関数のアドレス
戻り値 : 成功した場合は0、失敗した場合は0以外。
機能  : プログラム終了時に実行する関数を登録する。

[ getenv ]  : 環境変数を取得する。
関数型 : char *getenv(const char *name);
引数  : 名前
戻り値 : 値を格納した文字列の先頭アドレス。見つからない場合はNULL。
機能  : 環境変数を取得する。

[ bsearch ]  : 2分探索を行う。データは昇順に整列されていなくてはならない。
関数型 : void *bsearch(const void *key, const void *base,
    size_t nmemb,size_t size, int (*compar)(const void *x, const void *y));
引数  : 探す値、配列の先頭、探索数、1要素のサイズ、比較関数のアドレス
戻り値 : 見つかった要素のアドレス。見つからない場合はNULL。
機能  : 2分探索を行う。データは昇順に整列されていなくてはならない。
比較  : 比較関数は、x > yの場合は正、x = yの場合は0、x < yの場合は負を返すこと。

[ qsort ]  : 配列を昇順に整列する。クイックソートを使っていることが多い。
関数型 : void qsort(void *base, size_t nel, size_t width,
    int(*compar)(const void *x, const void *y));
引数  : 配列の先頭、整列個数、1要素のサイズ、比較関数のアドレス
機能  : 配列を昇順に整列する。クイックソートを使っていることが多い。
比較  : 比較関数は、x > yの場合は正、x = yの場合は0、x < yの場合は負を返すこと。

[ system ]  : 処理系が用意しているコマンドを実行する。
関数型 : int system(const char *string);
引数  : コマンド文字列。
戻り値 : 処理系のコマンド依存。コマンドを実行できなかった場合は-1。
機能  : 処理系が用意しているコマンドを実行する。
補足  : 当然だが、コマンドは処理系が異なると互換性がない。
    : NULLを指定すると、コマンドが利用できない環境では0を返します。