標準プログラマーズ ライブラリシリーズはじめてのC言語 完全入門

[表紙]はじめてのC言語 完全入門

紙版発売

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 リスト

索引