C言語リファレンス

これはクイックリファレンスマニュアルです——最初から最後まで読む必要はありません。必要なときに調べて使ってください。

キーワード早見表

C89キーワード(32)

キーワード 説明
auto 自動記憶域期間(デフォルト)
break ループまたはswitchの脱出
case switchの分岐ラベル
char 文字型
const 定数修飾子
continue 次のループ反復へ跳躍
default switchのデフォルト分岐
do do-whileループ
double 倍精度浮動小数点
else if-elseのelse分岐
enum 列挙型
extern 外部リンケージ宣言
float 単精度浮動小数点
for forループ
goto 無条件ジャンプ
if 条件文
int 整数型
long 長整数修飾子
register レジスタ記憶のヒント
return 関数の戻り
short 短整数修飾子
signed 符号付き修飾子
sizeof 型または変数のサイズ取得
static 静的記憶域期間または内部リンケージ
struct 構造体
switch 多分岐選択
typedef 型の別名
union 共用体
unsigned 符号なし修飾子
void 空型
volatile 最適化防止修飾子
while whileループ

C99追加キーワード(5)

キーワード 説明
_Bool ブール型(通常はboolマクロ経由)
_Complex 複素数型
_Imaginary 虚数型
inline インライン関数のヒント
restrict ポインタエイリアス制限

C11追加キーワード(7)

キーワード 説明
_Alignas アライメント指定
_Alignof アライメント要件の取得
_Atomic アトミック型
_Generic ジェネリック選択
_Noreturn 関数が戻らない
_Static_assert 静的アサーション
_Thread_local スレッドローカル記憶域

フォーマット指定子早見表

printf フォーマット指定子

指定子 出力型
%d / %i 符号付き10進整数 printf("%d", 42) → 42
%u 符号なし10進整数 printf("%u", 42U) → 42
%o 符号なし8進数 printf("%o", 8) → 10
%x 符号なし16進数(小文字) printf("%x", 255) → ff
%X 符号なし16進数(大文字) printf("%X", 255) → FF
%f 10進浮動小数点 printf("%f", 3.14) → 3.140000
%e 科学記数法(小文字e) printf("%e", 0.001) → 1.000000e-03
%E 科学記数法(大文字E) printf("%E", 0.001) → 1.000000E-03
%g %fか%eを自動選択 printf("%g", 0.0001) → 0.0001
%c 文字 printf("%c", 'A') → A
%s 文字列 printf("%s", "hi") → hi
%p ポインタアドレス printf("%p", ptr) → 0x7ffd...
%ld long printf("%ld", 100000L)
%lld long long printf("%lld", 1LL<<40)
%zu size_t printf("%zu", sizeof(int))
%% パーセント記号自体 printf("100%%") → 100%

printf 修飾子

修飾子 意味
%- 左詰め "%-10s"
%0 ゼロ埋め "%05d" → 00042
%m 最小フィールド幅 "%10d"
%.n 精度 "%.2f" → 3.14

scanf フォーマット指定子

指定子 読み取り型
%d int
%u unsigned int
%ld long
%f float
%lf double
%c 文字
%s 文字列(空白で停止)
%[...] スキャン集合
%*d 読み取るが破棄

エスケープ文字表

エスケープシーケンス 意味 ASCII値
\a 警告(ベル) 7
\b バックスペース 8
\f フォームフィード 12
\n 改行 10
\r 復帰 13
\t 水平タブ 9
\v 垂直タブ 11
\\ バックスラッシュ 92
\' シングルクォート 39
\" ダブルクォート 34
\0 ヌル文字 0
\ooo 8進数値
\xhh 16進数値

演算子優先順位表

最も高い優先順位から低い順に記載します。同じ行の演算子は同じ優先順位です:

優先順位 演算子 結合性 説明
1 () [] -> . ++(後置) --(後置) 左→右 後置
2 ++(前置) --(前置) + - ! ~ *(間接) &(アドレス) sizeof (型) 右→左 単項
3 * / % 左→右 乗算
4 + - 左→右 加算
5 << >> 左→右 シフト
6 < <= > >= 左→右 関係
7 == != 左→右 等価
8 & 左→右 ビットAND
9 ^ 左→右 ビットXOR
10 | 左→右 ビットOR
11 && 左→右 論理AND
12 || 左→右 論理OR
13 ?: 右→左 条件
14 = += -= *= /= %= &= ^= |= <<= >>= 右→左 代入
15 , 左→右 カンマ
💡 ヒント: 覚え方:単項→乗算→加算→シフト→関係→等価→ビットAND→XOR→ビットOR→論理AND→論理OR→条件→代入→カンマ

主要ヘッダファイル関数リファレンス

stdio.h

関数 目的
printf stdoutへのフォーマット出力
fprintf ファイルへのフォーマット出力
sprintf 文字列へのフォーマット出力
snprintf 文字列へのフォーマット出力(安全)
scanf stdinからのフォーマット読み取り
fscanf ファイルからのフォーマット読み取り
sscanf 文字列からのフォーマット読み取り
fopen ファイルを開く
fclose ファイルを閉じる
fgetc 1文字読み取り
fputc 1文字書き込み
fgets 1行読み取り
fputs 文字列書き込み
fread バイナリ読み取り
fwrite バイナリ書き込み
fseek ファイル位置の設定
ftell ファイル位置の取得
rewind ファイル位置を先頭に戻す
feof ファイル終端の確認
ferror ファイルエラーの確認
fflush バッファのフラッシュ
remove ファイルの削除
rename ファイルの名前変更
tmpfile 一時ファイルの作成
perror エラーメッセージの出力

stdlib.h

関数 目的
malloc 動的メモリ確保
calloc メモリ確保とゼロ初期化
realloc メモリの再確保
free メモリの解放
atoi 文字列をintに変換
atol 文字列をlongに変換
atof 文字列をdoubleに変換
strtol 文字列をlongに変換(安全)
strtod 文字列をdoubleに変換(安全)
rand 乱数の生成
srand 乱数シードの設定
qsort クイックソート
bsearch 二分探索
abs 整数の絶対値
labs longの絶対値
exit プログラムの終了
atexit 終了時関数の登録
system システムコマンドの実行
getenv 環境変数の取得

string.h

関数 目的
strcpy 文字列のコピー
strncpy 文字列のコピー(安全)
strcat 文字列の連結
strncat 文字列の連結(安全)
strcmp 文字列の比較
strncmp 文字列の比較(長さ指定)
strlen 文字列の長さ
strchr 文字の検索(左から)
strrchr 文字の検索(右から)
strstr 部分文字列の検索
strtok 文字列のトークン分割
memcpy メモリのコピー
memmove メモリの移動(重複許可)
memset メモリの埋め込み
memcmp メモリの比較

math.h

関数 目的
fabs 浮動小数点の絶対値
sqrt 平方根
pow 累乗
ceil 切り上げ
floor 切り捨て
round 四捨五入
fmod 浮動小数点剰余
log 自然対数
log10 常用対数
sin 正弦
cos 余弦
tan 正接
asin 反正弦
acos 反余弦
atan 反正接
atan2 反正接(2引数)

ctype.h

関数 目的
isalpha アルファベットか
isdigit 数字か
isalnum アルファベットまたは数字か
isupper 大文字か
islower 小文字か
isspace 空白文字か
ispunct 句読点か
isprint 印字可能文字か
toupper 大文字に変換
tolower 小文字に変換

time.h

関数/マクロ 目的
time 現在時刻の取得
clock CPUクロックティックの取得
localtime ローカル時刻に変換
gmtime UTC時刻に変換
strftime 時刻のフォーマット
difftime 時間差の計算
mktime tmをtime_tに変換
CLOCKS_PER_SEC 1秒あたりのクロックティック数

assert.h

関数/マクロ 目的
assert(expr) アサーション、失敗時に終了
NDEBUG 定義時にassertを無効化

errno.h

シンボル 目的
errno グローバルエラーコード変数
EDOM 定義域エラー
ERANGE 範囲エラー

データ型の範囲早見表

サイズ(バイト) 最小値 最大値
char 1 -128 127または0/255
signed char 1 -128 127
unsigned char 1 0 255
short 2 -32768 32767
unsigned short 2 0 65535
int 4 -2147483648 2147483647
unsigned int 4 0 4294967295
long 4/8 プラットフォーム依存 プラットフォーム依存
unsigned long 4/8 0 プラットフォーム依存
long long 8 -9223372036854775808 9223372036854775807
float 4 約1.2e-38 約3.4e+38
double 8 約2.2e-308 約1.8e+308
100%