C言語逆引き大全 500の極意
概 要
本書は、すべてのCプログラマ/開発者に贈る“C言語百科事典”です。Windowsはもとより、Linuxでのプログラミングに役立つ情報も満載しています。基本的な文法事項を徹底的にフォローするのはもちろん、アルゴリズム、ポインタ、グラフィックス、マルチスレッド正規表現、ネットワークなど、身に付けておきたいトピックもあますところなく盛り込みました。
| 著者 | 平田豊 |
| 価格 | 円(税込)(本体3000円) |
| ISBN | 4-7980-0647-5 |
| 発売日 | 2003/11/28 |
| 判型 | A5 |
| 色数 | 2色 |
| ページ数 | 896 |
| CD/DVD | - |
| 対象読者 | 中級 |
| シリーズ | 逆引き大全 |
目次
サンプルプログラムのダウンロード
第1部 エッセンシャル・プログラミングの極意
第1章 C言語文法ひとめぐり
1-1 C言語の由来
1 そもそもC言語とは
2 どうしてC言語というネーミングなの?
1-2 プログラムの書き方
3 最初のプログラム
4 プログラムの構成
5 コメント
6 すべての始まり
7 コマンドライン引数を受け取る
8 環境変数を取得する
1-3 変数の扱い方
9 文字定数
10 文字列リテラル
11 変数のデータ型
12 変数のスコープ
13 予約語
1-4 C言語特有の機能
14 ヘッダファイル
15 プリプロセッサ
16 演算子の優先順位
17 関数
18 構造体と共用体
19 コーディングスタイル
1-5 制御構文のしくみ
20 制御構文─分岐
21 制御構文─ループ
第2章 コンパイラの使い方
2-1 コンパイラの存在
22 コンパイラとは
23 Visual C++の入手
24 Visual C++のインストール
2-2 コンパイルの仕方
25 総合開発環境上でのコンパイル
26 プロジェクト
27 プロジェクトへのソースファイルの追加
2-3 プログラムの記述
28 プログラムの入力
29 インデント
30 インデントを変更する
31 インデントをそろえる
32 コードの折りたたみ(アウトライン)
33 中かっこのインデント
34 行番号を付ける
2-4 ビルドとデバッグ
35 ビルド
36 ビルドでエラーが出た①
37 ビルドでエラーが出た②
38 プログラムの実行①
39 プログラムの実行②
40 引数を渡して実行
41 リリースモードとデバッグモード
42 デバッガが起動されるしくみ
43 デバッガの起動①
44 デバッグとプログラムの種類
45 デバッガの起動②
46 デバッガの起動③
2-5 開発ツールの利用
47 ヘルプの使い方
48 便利なショートカットキー
49 付属ツール
50 コマンドラインからのコンパイル
2-6 C++Compilerの使い方
51 C++Compilerの入手
52 C++Compilerのインストール①
53 C++Compilerのインストール②
54 C++Compilerのインストール③
55 C++Compilerのインストール④
56 コンパイラの起動確認
57 コンパイルの仕方
58 拡張キーワード
59 付属ツール
2-7 gccの使い方
60 gccとは
61 gccの入手(Linuxの場合)
62 gccの入手(Windowsの場合)
63 Cygwinの終了方法
64 Cygwinコンソールウィンドウでコピー&ペーストする
65 Linux上で実行結果を取得する
66 コンパイルの仕方
67 gccと拡張子の関係
68 プログラムの実行方法
第3章 開発ツールの使い方
3-1 ソースコードの整形
69 インデントをきれいにそろえる①
70 インデントをきれいにそろえる②
3-2 関数プロトタイプ宣言
71 関数プロトタイプ宣言の作成(Linuxの場合)
72 関数プロトタイプ宣言の作成(VC++の場合)
73 複雑な宣言に遭遇した!
3-3 関数および変数のサーチ
74 関数や変数の宣言へジャンプする(Visual Studioの場合)
75 関数や変数の宣言へジャンプする(viの場合)
76 関数や変数の宣言へジャンプする(emacsの場合)
3-4 ソースコードの統計
77 ソースコードの行数を数える①
78 ソースコードの行数を数える②
79 人月を計算する
80 条件コンパイル文の除去
3-5 プリプロセッサ
81 プリプロセス結果を参照する(VC++編)
82 プリプロセス結果を参照する(BCC++編)
83 プリプロセス結果を参照する(gcc編)
84 プログラムの統計を取る
85 プロジェクトを効率的に管理する
3-6 make
86 makefileの書き方①
87 makefileの書き方②
88 makefileの書き方③
89 makefileの書き方④
90 makefileの書き方⑤
91 makefileの書き方⑥
92 makefileの書き方⑦
93 makefileの書き方⑧
94 makefileの書き方⑨
95 makefileの書き方⑩
96 makeの使い方(VC++編)
97 Visual Studio上でmakeを使う
98 nmakeのオプション
99 makeのそのほかの機能(VC++編)
100 makeの使い方(BCC++編)
101 makeのオプション(BCC++編)
102 独自のmakeを作る(BCC++編)
103 makeのそのほかの機能(BCC++編)
104 makeの使い方(gcc編)
105 makeの実行(gcc編)
106 gmakeのドキュメント
107 gmakeのオプション
108 gmakeのそのほかの機能
109 makefileの自動生成①
110 makefileの自動生成②
111 makefileの自動生成③
112 makefileの自動生成④
113 makefileの自動生成⑤
114 makefileの自動生成⑥
115 makefileの自動生成⑦
116 makefileの自動生成⑧
117 gccの内部処理(Linux編)
3-7 デバッグ手法
118 ワトソン博士とは
119 ワトソン博士を使ってデバッグする
120 ワトソン博士のログを見る
121 Windowsでクラッシュダンプ解析をする
122 Windows Debuggerのコマンド
123 ブルースクリーンとは
124 ブルースクリーンの読み方
125 ブルースクリーン画面を停止させる
126 意図的にブルースクリーンを発生させる
127 クラッシュダンプの採取(Windows編)
128 クラッシュダンプの解析(Windows編)
129 デバッガ(Turbo Debugger)とは
130 Turbo Debuggerを使う前準備
131 Turbo Debuggerの設定をする
132 Turbo Debuggerを使う
133 Turbo Debuggerで変数の監視をする
134 coreとは(Linux編)
135 coreを意図的に作る
136 coreを調べる
137 gdbでスタックトレースを表示する
138 gdbで変数の値を表示する
139 gdbでブレークポイントを設定する
140 gdbでよく使われるコマンド
141 DDDとは
142 panic画面の読み方(Linux編)
143 Oopsメッセージを解析する
144 カーネルデバッガを使う
145 kdbの起動
146 kdbを使ってみる
147 クラッシュダンプの採取と解析(Linux編)
148 LKCDを利用できるようにする①
149 LKCDを利用できるようにする②
150 LKCDを利用できるようにする③
151 LKCDを利用できるようにする④
152 LKCDを利用できるようにする⑤
153 LKCDを利用できるようにする⑥
154 クラッシュダンプの解析
第4章 数学とグラフィックス
4-1 数学関数の使い方
155 数学ライブラリを利用する
156 浮動小数点演算のバグ?
157 浮動小数点の誤差を目視する
158 doubleとfloatの比較①
159 doubleとfloatの比較②
4-2 浮動小数点のしくみ
160 浮動小数点のフォーマット
161 浮動小数点のフォーマットを出力する
162 誤差なく表現できる浮動小数点とは
163 浮動小数点を誤差なく計算する
164 基本的な数学関数の一覧
4-3 Windowsアプリケーションのしくみ
165 コンピュータグラフィックス
166 アプリケーションプログラムの作り方
167 ウィンドウクラスの登録
168 ウィンドウの出現方法
169 ウィンドウの描画
170 メッセージループ
171 ウィンドウプロシージャ
172 アプリケーションプログラムのコンパイル方法
4-4 グラフィックスの描画
173 図形を描画する
174 色を付ける
175 図形を描くプログラム
176 WinMain()とmain()の混在
4-5 ビットマップの扱い方
177 ビットマップ画像をロードする
178 インスタンスのハンドルの取得
179 ビットマップの読み込み
180 メモリデバイスコンテキストの作成とビットマップ画像とのバインド
181 ビットマップ画像の画面への転送
182 ビットマップ画像をロードするプログラム
4-6 画像処理のしくみ
183 画像処理を行うために必要なこと
184 画像を濃淡化する
185 画像を反転する
186 画像をモザイク化する
187 画像処理を行うプログラム
4-7 グラフィックエフェクト
188 雲を作り出す
189 球を描く
190 球に光を照らす
191 バラ曲線を描く
192 リサージュ曲線を描く
4-8 動くグラフィックエフェクト
193 メタボール
194 画面のちらつきを防止する
195 アニメーションさせる
196 フレームレートの計算方法
197 メタボールを実装する
第5章 文字と文字列
5-1 文字のしくみ
198 文字
199 charのビット数
200 charの符号
201 charのサイズに注意
202 文字定数の型
203 文字定数に日本語を指定する
204 ASCIIコードの出力
205 文字の判別
206 文字の判別(拡張編)
5-2 ワイド文字のしくみ
207 ワイド文字
208 ロケール
209 ワイド文字からバイト列への変換
210 半角カナのバイト数
5-3 文字列のしくみ
211 文字列
212 文字列の定義
213 配列による文字列の書き換え
214 ポインタによる文字列の書き換え
215 メモリ属性を変更する
216 文字列表示の仕方
5-4 文字列の操作
217 文字列の長さを取得する
218 sizeof()の落とし穴
219 配列のサイズを自動取得
220 文字列のコピー
221 メモリ領域のコピー
222 bcopy()とは
223 文字列の連結
224 文字列の比較
225 大文字・小文字を無視した文字列の比較
226 文字列から文字の検索
227 文字列から文字列の検索
5-5 文字列と数値の相互変換
228 文字列を数値に変換する
229 文字列を数値にまともに変換する
230 数値を文字列に変換する
第6章 アルゴリズムとコンピュータパズル
6-1 パズルに利用できるアルゴリズム
231 コンピュータパズルとは
232 ユニークな数値の組み合わせを求める
233 9の倍数であるかを判別する
234 大きな数値同士の加算を行う
235 分数の足し算
236 素数の判別
237 平方根を求める①
238 平方根を求める②
239 三角形の面積
240 分布数えソートとは
6-2 数を扱うパズル
241 数式を使ったパズル
242 魔方陣を使ったパズル
243 ペンシルパズルをコンピュータで解く
244 8パズルを解く
245 アナログ時計のパズル
6-3 図形パズル
246 ピースの箱詰め
247 テトロミノの箱詰めパズル
248 テトロミノの箱詰めパズルを解く①
249 テトロミノの箱詰めパズルを解く②
250 ペントミノの箱詰めパズル
251 ソースコードの差分を取る
第2部 アドバンスト・プログラミングの極意
第7章 入出力処理
7-1 標準出力
252 printfのバグ?
253 printf()
254 拡張版printf()
7-2 可変引数
255 可変引数を持つ関数①
256 可変引数を持つ関数②
257 可変引数を持つ標準ライブラリ関数
7-3 標準エラー出力
258 標準I/Oストリームとは
259 標準エラー出力のリダイレクトは可能か
260 ファイルハンドル番号
261 リダイレクトされないコンソール出力
7-4 文字および文字列の入出力
262 文字/文字列の出力
263 書式付き標準入力
264 バッファのフラッシュ
265 文字の入力
266 文字列の入力
267 漢字を含めると表示がバグる?
268 リダイレクトされないコンソール入力
269 バッファへの書式付き出力①
270 バッファへの書式付き出力②
271 バッファからの書式付き入力
272 printfデバッグとは
7-5 ファイルの入出力
273 ファイルのオープンとクローズ
274 テキストとバイナリの違い
275 標準出力をバイナリモードにする
276 ファイルの一括クローズ
277 低水準のファイルオープンとクローズ
278 ファイルを削除する
279 ファイルへの文字I/O
280 ファイルへの文字列I/O
281 ファイルへのブロックI/O
282 ファイルポインタのシークと取得
283 ファイルのリネーム
284 テンポラリファイルを作る
第8章 様々な標準ライブラリ関数
8-1 プログラムの終了方法
285 プログラムの終了
286 終了ステータスの参照方法
287 正常終了時に関数を呼び出す
288 正常終了時に引数付きで関数を呼び出す
289 プログラムの診断
8-2 エラー検出
290 エラーメッセージを出力する
291 errnoは本当にグローバル変数か?
292 ファイルの終端を判別する
293 ストリームのエラーを検出する
8-3 外部プログラム
294 外部プログラムの起動
295 外部プログラムとの置き換え
296 外部プログラムの呼び出しを柔軟に行う
8-4 時間の扱い方
297 秒単位で時間を計測する
298 プロセッサ時間を計測する
299 日時の設定を行う(Windows編)
300 日時の設定を行う(Linux編)
301 経過秒数から日時へ変換する
302 乱数を生成する
8-5 メモリの扱い方
303 メモリの確保
304 メモリの解放
305 アライメントを意識したメモリの確保
306 メモリの再確保
8-6 そのほかの機能
307 よく使われる規定マクロ
308 構造体メンバのオフセットを計算する
309 ソースコードを出力するソースコード
310 関数間ジャンプする
第9章 ポインタ・配列・構造体
9-1 ポインタのしくみ
311 ポインタとは
312 ポインタ変数の他の定義
313 void型のポインタ変数とは
314 NULLとは
315 NULLの定義内容
316 ポインタにむりやりアドレスを格納する
317 ポインタにまじめにアドレスを格納する
318 ポインタのポインタ
9-2 配列のしくみ
319 ポインタ配列
320 配列名に&を付けると
321 配列の一括コピー①
322 配列の一括コピー②
9-3 構造体のしくみ
323 構造体のメンバ
324 配列と添え字は交換可能
325 関数で配列を返す①
326 関数で配列を返す②
327 関数で配列を返す③
328 関数で配列を返す④
329 関数で配列を返す⑤
330 ポインタ変数の参照渡し①
331 ポインタ変数の参照渡し②
9-4 ポインタと配列
332 ポインタと配列の読み替え
333 配列のextern宣言①
334 配列のextern宣言②
335 配列のextern宣言③
9-5 関数とポインタの関係
336 関数ポインタ
337 関数テーブル
338 ポインタの演算
339 負数の添え字
340 ポインタのポインタと2次元配列
341 構造体内の可変長配列①
342 構造体内の可変長配列②
第10章 gcc拡張機能で見るC99の新機能
10-1 gcc拡張機能
343 gcc拡張機能とは
344 gcc拡張機能を抑止する
10-2 様々な拡張機能
345 タグ付き構造体
346 式の中の文と宣言
347 型への参照
348 条件演算子
349 64ビット整数
350 配列のサイズ指定
351 マクロの引数
352 マクロの複数行連結
353 文字列リテラル
354 コード中に宣言文を置く
355 C++風コメント
356 インラインアセンブラ
357 ローカルなラベル
358 ラベル値
359 ネスト(入れ子)関数
360 一般化された左辺値
361 16進数の浮動小数点
362 配列の可変サイズ指定
363 voidポインタの演算
364 定数以外の初期値
365 配列の明示的な初期化
366 switch文のcaseラベルでの範囲指定
367 関数への属性宣言
368 旧式の関数定義とプロトタイプ宣言
369 識別子への$の使用
370 エスケープコード
371 インライン関数
372 構造体のメンバを詰める
373 タグ名なしの構造体および共用体
第11章 高度なトピック
11-1 Windowsでのマルチスレッド
374 マルチスレッドとは
375 Windowsプログラムでスレッドを生成する
376 Windowsプログラムでスレッドを終了する
377 1つのスレッドの終了を待ち合わせる(Windows編)
378 複数のスレッドの終了を待ち合わせる(Windows編)
379 スレッドの実行を中断するには(Windows編)
380 Windowsプログラムでマルチスレッドを使う
381 コンソールプログラムでスレッドを生成する(Windows編)
382 コンソールプログラムでスレッドを終了する(Windows編)
383 スレッドハンドルを閉じる(Windows編)
384 スレッドの優先度を調整する(Windows編)
385 プロセスの優先度を調整する(Windows編)
386 プロセスハンドルを取得する(Windows編)
387 プロセスIDを取得する(Windows編)
388 コンソールプログラムでマルチスレッドを使う
389 マルチスレッドを使うメリット(Windows編)
390 マルチスレッドを使うメリット~正解~
391 スレッド関数に複数のパラメータを渡す
392 Windowsプログラムでのコマンドライン引数の受け取り
393 排他制御のしくみ①(Windows編)
394 排他制御のしくみ②(Windows編)
395 排他制御のしくみ③(Windows編)
11-2 Linuxでのマルチスレッド
396 Linuxでマルチスレッドを利用する
397 スレッドを生成する(Linux編)
398 スレッド属性の種類(Linux編)
399 マルチスレッドオブジェクトの初期化(Linux編)
400 マルチスレッドオブジェクトの破棄(Linux編)
401 排他制御のしくみ(Linux編)
402 スレッド関数の終了(Linux編)
403 1つのスレッドの終了を待ち合わせる(Linux編)
404 Linuxでマルチスレッドを使う
11-3 正規表現
405 正規表現
406 正規表現で使われるメタ文字
407 プログラムで正規表現を使う場合の注意事項
408 Visual C++で正規表現を使う①
409 Visual C++で正規表現を使う②
410 Visual C++で正規表現を使う③
411 Visual C++で正規表現を使う④
412 Visual C++で正規表現を使う⑤
413 C++Builderで正規表現を使う①
414 C++Builderで正規表現を使う②
415 C++Builderで正規表現を使う③
416 C++Builderで正規表現を使う④
417 C++Builderで正規表現を使う⑤
418 C++Builderで正規表現を使う⑥
419 C++Builderで正規表現を使う⑦
420 gccで正規表現を使う①
421 gccで正規表現を使う②
422 gccで正規表現を使う③
11-4 ライブラリ
423 ライブラリの基礎知識①
424 ライブラリの基礎知識②
425 ライブラリの基礎知識③
426 シェアドライブラリを作ってみる①
427 シェアドライブラリを作ってみる②
428 ライブラリの基礎知識④
429 ダイナミックライブラリ
11-5 算術型変換
430 通常の算術型変換①
431 通常の算術型変換②
432 コードクリーン
11-6 ネットワークプログラミング
433 ネットワークプログラミングのススメ
434 ソケットのためのAPI
435 ソケットインタフェイス①
436 ソケットインタフェイス②
437 ネットワークバイトオーダー
438 インターネットアドレスの操作
439 ソケットの生成
440 WinSockの初期化と終了
441 クライアント・サーバ型プログラム
442 ソケットに名前を付ける
443 ソケットを受動モードにする
444 クライアントからの接続を待つ
445 サーバへ接続する
446 パケットの送信を行う
447 パケットの受信を行う
448 ソケットを閉じる
449 行儀のよいクローズ
450 クライアント・サーバ型のネットワークプログラム(Windows編)
451 クライアント・サーバ型のネットワークプログラム(Linux編)
452 selectとは
11-7 パケットキャプチャ
453 パケットキャプチャとは
454 ソケットをRAWモードにする(Linux編)
455 ソケットをRAWモードにする(Windows編)
456 NICをpromiscuousモードにする①(Linux編)
457 IOCTLとは
458 NICをpromiscuousモードにする②(Linux編)
459 promiscuousモードにする上での注意点
460 NICをpromiscuousモードにする(Windows編)
461 パケットの解析
462 パケットキャプチャを実装する
11-8 シグナル
463 CTRL+Cを捕捉する(Linux編)
464 CTRL+Cを捕捉する(Windows編)
11-9 IPv6ネットワークプログラミング
465 IPv6プログラミングのキモ
466 getaddrinfo()とは
467 freeaddrinfo()とは
468 IPアドレスを文字列にする(Windows編)
469 IPv6のサポート状況
470 IPv6環境の構築
471 IPv6のアドレス体系
472 IPv6のループバックアドレス
473 実践! IPv6プログラミング
11-10 システムコール
474 インタバルタイマ
475 シグナルを受け取る
476 プロセスを休眠させる
477 インタバルタイマを実装する
478 プロセスの生成
479 コピーオンライトとは
480 子プロセスの終了を待つ
481 fork()を使ったプログラムの書き方
482 プロセス生成ですれ違いが起こると?
483 psコマンドの意味
11-11 IPC
484 プロセス間通信
485 共有メモリセグメントの割り当て
486 共有メモリセグメントのアタッチ
487 共有メモリセグメントのデタッチ
488 共有メモリセグメントIDの破棄
489 共有メモリを実装してみる
490 共有メモリセグメントのIDを破棄し忘れると?
491 プロセス間での排他制御
492 セマフォの使い方
493 ftok()の使い方
494 セマフォIDを取得する
495 セマフォの初期値を設定する
496 P操作もしくはV操作を行う
497 セマフォIDを破棄する
498 セマフォを使ったプログラムを作る
499 FIFOとは
500 FIFOを使ったプログラム
COLUMN
コメント? 割り算?
fooとbarってナニ?
32ビットから64ビットへの移植
MSDNとは?
READMEってなによ?
C++Compilerをお手軽にインストール
オープンソースソフトウェアとは?
RPMを探すには?
vimでローカル変数宣言へ飛ぶ
Windowsで標準エラー出力をリダイレクトするには?
MS-DOSプロンプトのコマンドヒストリ
ブルースクリーン実践例?
Lena画像
オクテット
キリのいい数字
倍数判定
sqrt()のバグ?
空白を含むファイルへアクセスするには?
システムの日時を正しく合わせるには?
死肉?
メモリの解放は本当に必要?
C99とは?
規格を意識したコンパイル方法
関数プロトタイプ宣言は必須
増えた予約語
forループ
列挙型のカンマ
関数名
エスケープシーケンス
~ex()というネーミング
コマンドラインの履歴
promiscuousモード
索引

