標準プログラマーズ ライブラリシリーズはじめてのC言語 完全入門
2001年5月21日紙版発売
塚越一雄 著
B5変形判/472ページ
定価2,728円(本体2,480円+税10%)
ISBN 4-7741-1211-9
ただいま弊社在庫はございません。
書籍の概要
この本の概要
C言語の入門書は多数出版されていますが,これほど要領よく,必要な事柄を漏らさずまとめているものもありません。一見分厚くて大変そうですが,最初から読んでみてください。著者の確かな筆力に引きずられて,あら不思議,いつの間にか読み終わってしまいますよ。
こんな方におすすめ
- はじめてC言語を学習する方
- プログラマーを目指す学生
目次
第1章 プログラムの入力からコンパイル/実行まで
- 1 プログラム開発の流れ
- 1.1 ソースファイル
- 1.2 コンパイル
- 2 実行に失敗するとき
- 2.1 プログラムが実行できない理由
- 2.2 ワーキングディレクトリを検索パスに含めない理由
- 3 実行ファイル名
- 4 4つのステージ
- 4.1 使用するプログラム
- 4.2 第1ステージ:――プリプロセス
- 4.3 第2ステージ:――コンパイル
- 4.4 第3ステージ:――アセンブル
- 4.5 第4ステージ:――リンク
第2章 はじめてのCのプログラム
- 1 最も短いプログラム
- 1.1 最初のサンプルプログラム
- 1.2 エラーメッセージの意味
- 2 1文字関数の定義
- 2.1 2つ目のサンプルプログラム
- 2.2 外部宣言
- 2.3 関数の定義
- 2.4 53種類の1文字関数
- 3 識別子
- 3.1 3つ目のサンプルプログラム
- 3.2 識別子
- 3.3 名前の付け方
- 3.4 予約語
- 4 複数の関数
- 5 関数 main
- 5.1 なぜコンパイルできなかったか?
- 5.2 コンパイル可能なサンプルプログラム
- 6 スタートアップモジュール
- 7 実行可能で最も短いプログラム
第3章 プログラムの書法
- 1 Cの書式
- 1.1 フリーフォーマット
- 1.2 トークン
- 1.3 標準フォーマット
- 2 コメント
- 2.1 ブロック形式のコメント
- 2.2 コメントを置く場所
- 2.3 行形式のコメント
- 2.4 コメントのネスト
第4章 簡単な出力
- 1 文字列の出力
- 1.1 Hello, world
- 1.2 文
- 1.3 文を置く場所
- 1.4 ユーザー定義関数と標準関数
- 1.5 文字列の出力 ――puts
- 1.6 何かが起こる,はじめてのプログラム
- 1.7 インデント
- 2 標準出力
- 3 応用:――日記帳
第5章 ヘッダファイルとリターンコード
- 1 ヘッダファイル
- 1.1 誤りのあるプログラム
- 1.2 stdio.h
- 1.3 誤りを見つける
- 2 リターンコード
- 2.1 リターンコードの意味
- 2.2 シェルによるリターンコードの表示
- 2.3 引数リスト
- 2.4 型
- 2.5 関数値
- 2.6 プログラムでリターンコードを返す
- 3 新しい書式
第6章 エスケープシーケンス
- 1 エスケープシーケンス(その1):――Cの文字列
- 1.1 空襲警報
- 1.2 エスケープシーケンスとエスケープ文字
- 1.3 ベルを鳴らす ―― \a
- 1.4 改行 ―― \n
- 2 エスケープシーケンス(その2):――端末
- 2.1 ANSIエスケープシーケンス
- 2.2 ESCの出力
- 2.3 文字の修飾
- 2.4 色を付ける
- 2.5 文字修飾のリセット
- 2.6 低輝度と高輝度
- 2.7 サンプルプログラム
第7章 関数参照
- 1 main以外の関数
- 1.1 実行されない関数
- 1.2 関数参照
- 1.3 式文
- 1.4 信号機シミュレーション
- 2 関数の中から関数を呼び出す
- 3 引数
第8章 書式付き出力
- 1 putsからprintfへ
- 1.1 printf
- 1.2 putsとprintfの違い
- 2 書式付き出力
- 2.1 整数の出力
- 2.2 複数の引数
- 2.3 「%」で始まるエスケープシーケンス
- 2.4 変換仕様
- 2.5 変換文字と書式文字列
第9章 算術演算
- 1 四則演算
- 1.1 文字列と整数
- 1.2 算術演算子
- 1.3 表示をわかりやすく
- 2 整数の演算
- 2.1 数の合計(その1):――1〜100まで
- 2.2 数の合計(その2):――1〜1000まで
- 2.3 オリンピックの開催
- 3 浮動小数点数の演算
- 3.1 肥満度(BMI)
- 3.2 浮動小数点数
- 3.3 小数点以下の桁数の指定
- 3.4 元利合計
第10章 いろいろなデータ型
- 1 メモリ
- 1.1 ビットとバイト
- 1.2 1バイトで表現できるデータ数
- 1.3 2バイト,4バイトの整数
- 2 データ型
- 3 リテラル
- 3.1 文字リテラル
- 3.2 文字列リテラル
- 3.3 整数リテラル
- 3.4 浮動小数点数リテラル
- 4 リテラルの出力
- 5 文字型は整数でもある
第11章 変数と定数
- 1 16進数変換プログラム
- 1.1 10進数→16進数
- 1.2 16進数変換プログラム(第1版)
- 1.3 16進数変換プログラム(第2版)
- 2 変数
- 2.1 宣言
- 2.2 変数宣言(その1)
- 2.3 型名
- 2.4 代入
- 2.5 変数宣言(その2)
- 2.6 16進数変換プログラム(第3版)
- 3 sizeof
- 3.1 sizeof演算子
- 3.2 データ型のサイズを調べる
- 4 定数
- 5 列挙型
- 5.1 enum
- 5.2 値の変更
- 5.3 列挙タグ
- 5.4 サンプルプログラム
- 5.5 書式について
第12章 書式付き入力(その1)―― 基礎
- 1 入力フィールド
- 1.1 入力データの形式
- 1.2 scanfの書式
- 1.3 1個のフィールドを入力
- 1.4 複数のフィールドを入力
- 2 難しい文字入力の動作
- 2.1 文字が入力されない
- 2.2 入力データの空白
- 2.3 先行する空白の除去
- 2.4 空白が除去された
- 2.5 書式文字列中の空白
- 3 入力エラー
- 3.1 異なる種類のデータの入力
- 3.2 入力フィールドの数
- 3.3 入力の継続
- 3.4 EOF
- 4 入力フィールドのスキップ
- 5 入力文字の指定
- 6 \n の問題
第13章 書式付き入力(その2)―― 応用
- 1 入力可能な16進数変換プログラム
- 1.1 16進数変換プログラム(第4版)
- 1.2 16進数変換プログラム(第5版)
- 2 等差級数
- 3 オリンピックの開催(第2版)
- 4 円周/円の面積/球の表面積/球の体積
- 5 記号定数
- 5.1 記号定数の定義
- 5.2 プリプロセッサ
第14章 選択文 ―― if
- 1 基本三構造
- 1.1 連接
- 1.2 選択
- 1.3 反復
- 1.4 制御文
- 2 条件により処理を分ける ―― if
- 2.1 if文
- 2.2 式の真偽
- 2.3 サンプルプログラム
- 2.4 else節
- 2.5 if文のインデント
- 3 オリンピックの開催(第3版)
- 4 条件式
- 4.1 演算子とオペランド
- 4.2 算術式
- 4.3 論理否定演算子 ―― !
- 5 結果が真/偽になる演算
- 5.1 等値演算
- 5.2 関係演算子
- 5.3 論理演算子
- 6 ブロック
- 6.1 プログラミングの落とし穴
- 6.2 プログラムの終了
- 6.3 ブロック文
- 6.4 除算プログラム
- 7 代入式
- 7.1 文と式
- 7.2 代入式の値
- 7.3 誤らないために
- 7.4 便利な代入式
- 7.5 結合規則
- 7.6 式文
第15章 高度な選択文
- 1 3つ以上の場合分け(その1)―― else if
- 1.1 else if
- 1.2 遊園地の入園料
- 2 3つ以上の場合分け(その2)―― switch
- 2.1 switch文
- 2.2 簡易メニュー
- 2.3 バリエーション(その1)
- 2.4 バリエーション(その2)
- 3 if文のネスト
- 3.1 ifとelseの対応
- 3.2 どちらがモテる?
- 3.3 { } の利用
- 4 三項演算
- 4.1 三項演算子 ―― ?
- 4.2 代入への利用
- 4.3 大小を比較するプログラム(三項演算子版)
- 5 論理演算子のトリック――猛者になるために
- 5.1 &&による選択文
- 5.2 || による選択文
第16章 反復文
- 1 インクリメント/デクリメント
- 1.1 代入演算子
- 1.2 インクリメント/デクリメント演算子
- 2 while
- 2.1 無限ループ
- 2.2 ループ変数
- 2.3 猫ふんじゃった
- 3 do〜while
- 3.1 書式
- 3.2 do〜while文とwhile文
- 3.3 猫ふんじゃった(do〜while版)
- 3.4 入力の検査
- 3.5 円周/円の面積/球の表面積/球の体積(第3版)
- 4 for
- 4.1 while文の拡張
- 4.2 書式
- 4.3 for文の動作
- 4.4 猫ふんじゃった(for版)
- 5 ループ変数の利用
- 5.1 繰り返しの回数
- 5.2 平方表
第17章 関数
- 1 関数定義
- 1.1 関数定義に必要なこと
- 1.2 関数名
- 1.3 関数の型
- 1.4 関数値
- 1.5 void ――関数値
- 1.6 void ――引数
- 1.7 関数の処理内容
- 1.8 関数を並べる順序
- 1.9 サンプルプログラム
- 2 関数参照
- 2.1 関数を呼び出す
- 2.2 複数の関数を使う
- 2.3 コンパイルエラー
- 3 関数のプロトタイプ宣言
- 3.1 プロトタイプ宣言の書式
- 3.2 関数参照のチェック
- 3.3 プロトタイプ宣言の位置
- 3.4 第2節を振り返る
- 3.5 プロトタイプ宣言の省略
- 3.6 複数の関数を使う(改良版)
- 3.7 C方式とPascal方式
- 4 なぜ関数を使うのか?
- 4.1 同一処理を複数回使うとき
- 4.2 困難は分割せよ
- 4.3 プログラムの部品化
- 5 static変数(関数内部)
- 5.1 関数内部の変数
- 5.2 static変数
- 6 10年後の元利合計
- 6.1 値を返す関数と返さない関数
- 6.2 べき乗 ――pow
- 6.3 10年後の元利合計
- 7 引数
- 7.1 引数なしでは限界がある
- 7.2 仮引数の定義
- 7.3 実引数の指定
- 7.4 min〜maxまでの合計
第18章 スコープ(通用範囲)
- 1 問題提起:―― 関数の参照回数を数える
- 2 ローカル変数
- 2.1 名前のスコープ
- 2.2 ローカル変数
- 2.3 名前の衝突
- 2.4 ブロックローカル
- 2.5 引数とローカル変数
- 3 グローバル変数
- 3.1 ファイルスコープ
- 3.2 ローカル変数との衝突
第19章 配列
- 1 配列の概要
- 2 基本型とユーザー定義型
- 3 配列を使う一連の流れ
- 3.1 宣言とサイズ
- 3.2 要素とインデックス
- 3.3 代入と参照
- 4 配列に関する定石
- 4.1 初期値を与える
- 4.2 配列のサイズ
- 4.3 全要素の出力
- 4.4 全要素に同じ値を設定する
- 5 応用:――データの合計
- 5.1 入力データの保存と加算
- 5.2 const
- 5.3 変数
- 5.4 データの入力
- 5.5 ループの脱出 ―― break
- 5.6 データの件数
- 5.7 合計の計算
- 5.8 配列の限界
第20章 ポインタ
- 1 アドレス
- 2 ポインタを使う一連の流れ
- 2.1 宣言
- 2.2 変数のサイズ
- 2.3 変数表
- 2.4 変数の型
- 2.5 ポインタの型
- 2.6 代入
- 2.7 アドレス演算子
- 2.8 逆参照
- 3 ポインタ引数
- 3.1 swap関数
- 3.2 値引数
- 3.3 ポインタ引数
- 3.4 swap関数(第2版)
- 3.5 一時変数を使わない値の交換
- 3.6 配列とポインタ
- 4 ヌルポインタとNULL
第21章 配列とポインタ
- 1 配列名とアドレス
- 1.1 配列名をポインタに代入する
- 1.2 ポインタで配列要素を逆参照する
- 2 ポインタの演算
- 2.1 ポインタの演算の特殊性
- 2.2 ポインタの加算
- 2.3 ポインタの演算
- 3 配列要素の参照
- 3.1 ポインタを移動しない
- 3.2 ポインタを移動する
- 4 ポインタと配列の相互利用
- 4.1 ポインタを配列として使う
- 4.2 配列をポインタとして使う
- 5 配列とポインタの違い
- 6 配列引数
- 6.1 関数に配列を渡す
- 6.2 配列形式で受け取る
- 6.3 ポインタ形式で受け取る
- 6.4 配列のサイズ
- 6.5 配列の最大値を求める
第22章 文字列と文字配列
- 1 文字列変数
- 1.1 文字列変数
- 1.2 文字列変数が存在しない理由
- 2 文字配列
- 2.1 EOS
- 2.2 ヌル文字
- 2.3 配列名
- 3 文字配列の初期化
- 3.1 文字単位の初期化
- 3.2 { } を使う
- 3.3 文字列リテラルを使う
- 3.4 同じ文字で初期化する
- 3.5 文字列の代入
第23章 ファイル入出力
- 1 ファイルからの入力
- 1.1 ファイルのオープン
- 1.2 オープンモード
- 1.3 オープン時のエラーチェック
- 1.4 データの入力
- 1.5 charとint
- 1.6 fgetcをintで受け取る理由
- 1.7 EOF
- 1.8 ファイルのクローズ
- 2 簡易cat
- 3 ファイルへの出力
- 3.1 ファイルのオープン
- 3.2 データの出力 ――fputc
- 3.3 ファイルのクローズ
- 3.4 サンプルプログラム
- 3.5 ファイル名の指定
- 3.6 1文字入力 ――getchar
- 3.7 エラーの検査 ――ferror
- 3.8 ファイルの削除 ――remove
- 4 fprintf
- 4.1 書式
- 4.2 組み込みのファイルポインタ
- 4.3 標準エラー出力
第24章 文字列とポインタ
- 1 文字へのポインタ
- 1.1 文字列用メモリの確保
- 1.2 文字配列を使う方法
- 1.3 文字遊び
- 1.4 文字列リテラルを使う方法
- 2 文字列引数と文字列関数値
- 2.1 仮引数の書式
- 2.2 配列形式 vs ポインタ形式
- 2.3 文字列引数をとる関数の呼び出し
- 2.4 エラー処理 ――fatal
- 2.5 文字列関数値
- 2.6 最後の文字を削除する
第25章 文字列の応用
- 1 文字列関数
- 1.1 数値への変換
- 1.2 コピー
- 1.3 連結
- 1.4 文字列の検索
- 1.5 文字列の比較
- 1.6 トークンへの分解
- 2 安全な文字列の入力
- 2.1 getsの危険性
- 2.2 fgetsによる回避
- 2.3 \n の問題
- 2.4 get_strの作成
- 2.5 超過文字列の問題
- 2.6 get_str2の作成
- 3 数値入力関数
- 3.1 整数のサイズ
- 3.2 long intとint
- 3.3 整数の入力
- 3.4 超過文字列を捨てる
第26章 構造体
- 1 構造体を使う
- 1.1 例:――個人データの保存
- 1.2 構造体の宣言
- 1.3 メンバー
- 1.4 メンバーの参照
- 2 構造体タグ
- 2.1 同じ構造体を使う
- 2.2 構造体タグ
- 2.3 サンプルプログラム
- 3 構造体の代入
- 4 構造体の引数と関数値
- 4.1 構造体の関数値
- 4.2 構造体の引数
- 4.3 サンプルプログラム
- 5 構造体へのポインタ
- 5.1 メンバーの参照(その1)
- 5.2 メンバーの参照(その2)
- 6 typedef
- 6.1 typedefで新しい型名を作る
- 6.2 typedefの有用性
- 6.3 構造体への応用
第27章 共用体/ビットフィールド
- 1 共用体と構造体
- 2 共用体
- 2.1 構造体を使いたくない例
- 2.2 共用体の宣言
- 2.3 共用体のメモリ
- 2.4 メモリの共用
- 3 名前のない共用体
- 3.1 スプレッドシートのセル
- 3.2 名前のない共用体
- 3.3 サンプルプログラム
- 4 ビットフィールド
- 4.1 構造体を使う場合
- 4.2 ビットフィールドの定義
- 4.3 signed int,unsigned int
- 4.4 ビットフィールドのメモリ割り付け
- 4.5 サンプルプログラム
第28章 動的メモリ
- 1 動的メモリを使うための流れ
- 1.1 mallocの利点
- 1.2 動的メモリの確保
- 1.3 アドレスをポインタで受け取る
- 1.4 汎用ポインタ
- 1.5 型変換とキャスト
- 1.6 エラー処理
- 1.7 動的メモリの使用
- 1.8 動的メモリの解放
- 2 サンプルプログラム
- 3 動的メモリのサイズを変える
- 3.1 realloc
- 3.2 サンプルプログラム
- 4 拡張する文字列バッファ
- 4.1 何を作るのか?
- 4.2 文字列バッファを指すポインタ
- 4.3 文字列の入力
- 4.4 入力の終了
- 4.5 動的メモリを確保するタイミング
- 4.6 reallocをmallocの代わりに使う
- 4.7 ブロック単位での拡張
- 4.8 リスト
索引
この本に関連する書籍
-
基本情報技術者試験 C言語プログラム問題の切り札
本書では,はじめに解答ありきの説明ではなく,実際の試験問題を素材にしてプログラムの追い方や正答を導き出すためのプロセスをライブ感覚で解説します.C言語の基本を...