Linux/FreeBSDで学ぶC言語

キーフレーズ

関数 プログラム CCC CCCCCC ファイル printf 変数 文字列 include ポインタ 構造体 int 配列 char リスト main 表示 場合 scanf age address 文字 メモリ 実行 intf アドレス lnput 指定 Fig menuno () 入力 宣言 average 代入 name マリスト FreeBSD ソース str double 処理 CCCCCCCCCCCCCCCCCCCCCCCCC 要素 ファイル名 number Linux ディレクトリ データ 使う 000 stdio add 使っ 言語 コマンド 番地 adr 戻り値 引数 条件 swap コマンドライン 繰り返し print point 結果 count addressdata メニュー membercount void パーミッション sizeof makefile 環境変数 NULL 画面 演算子 while たとえば 使い 名前 test 先頭 カレントディレクトリ gcc cha コンパイル 実行ファイル define gdb COLOR else 情報

目次

CONTENTS 序章はじめてのプログラム作り プログラムの基本 ・ CPU を動作させるための手順書 = プログラム ・ CPU の命令に直結した言語 = アセンブリ言語 ・人間にわかりやすい言語 = 高級言語 C 言語とは ? ・ UN Ⅸの開発のために作られた「 C 言語」・・ ・ C 言語の特徴 Linux/FreeBSD で C 言語を扱えるようにする ・これから Linux/F 「 eeBSD をインストー丿レする場合 ・インストール済みの F 「 eeBSD/Linux に C の処理系を追加する場合 簡単なプログラムを作ってみよう ・プログラムを入力する ・・ 23 ・プログラムをコンバイ丿レする ・・ 25 ・カレントディレクトリのプログラムを実行できるようにする ・・ 26 2 3 3 4 5 14 23 五ロ 章 もっとも単純な C のプログラム ・プログラムの中心 : main 関数 変数を使ったプログラム ・変数とは ? ・変数の型 ・変数を宣言する ・変数に値を代入する ・計算結果を変数に代入する 情報の入出力 ・変数の値を画面に表示する ・変数に値を入力する 30 34 0 4 5 7 0 4 7 3 3 3 3 4 4 4 4 44

・ putcha 「 /getcha 「関数 条件によって処理の流れを変える ・条件を満たしたときだけ処理を行う ・条件を満たさなかったときも処理を行う ・条件判断を次々と行う ・ if のネスト ・ 2 つ条件を満たしたときのみ処理する ・ 2 つの条件のどちらかを満たしたときに処理する ・複数の条件を同時に判断する ・変数の値に応じて処理を分ける : switch 文 処理を繰り返す ・指定した回数だけ繰り返しを行う : f0 「文 ・ fo 「文の本来の意味 ・条件が満たされるまで繰り返す : do—while ・ while 文・・ ・・ 74 ・繰り返しのネスト ・繰り返しを途中で抜ける : b 「 eak 文・ ・・・ 79 その他の基本的な構文 ・定数を定義する ・ソースファイルにコメントを入れる ・長い行を分割する ・条件式の中で一般の処理を行う ・中括弧の省略 ・途中の処理を飛ばす . goto 文 9 0 4 6 9 2 3 4 5 4 5 5 5 5 6 6 6 6 50 70 81 2 3 3 5 5 8 8 8 8 8 8 第 2 章配列変数と構造体 配列変数を使う ・配列変数とは ? ・配列変数を使う ・配列変数の初期化 ・配列変数を使った例 2 次元の配列変数 ・ 2 次元配列を使う ・ 2 次元配列を使った例 文字の配列で文字列を扱う ・文字配列の宣言 ・文字配列に文字列を代入する 88 2 8 9 8 8 9 9 95 ・・ 96 ・・ 98 1 OO ・・ 1 OO ・・ 1 0 1

・文字列の表示と入力 ・文字列を操作するための関数 ・文字列の配列を使う 構造体でデータをまとめる ・構造体を定義する ・構造体の変数を宣言する ・構造体のメンバをアクセスする ・構造体の配列 ・構造体の初期化 ・構造体を新しい型のように扱う . typedef 文・ ・構造体を使った例 ・使い終わったメモリを解放する : f 「 ee 関数 ・メモリを確保する : malloc 関数 プログラムの実行時にメモリを確保する ・ポインタを介して構造体のメンバをアクセスする ・構造体へのポインタを宣言する 構造体へのポインタ ・文字列の配列とポインタ配列 ・ 2 次元配列とポインタ配列 ・ポインタ配列の宣言 ポインタの配列 ・ポインタと文字列の関係 ・ポインタを介して配列の内容を操作する ・ポインタを前後に移動する ・配列変数名をポインタのように使う 配列とポインタの関係 ・ポインタの使い道 ・ポインタの値を表示する ・ポインタで変数のアドレスを指し示す ・変数とメモリとの関係 ポインタの基本 ・メモリのサイズの表し方 ・情報を記憶する入れ物 = メモリ コンピュータとメモリの関係 第 3 章ポインタとメモリ管理 ・・ 1 02 ・・・ 1 04 ・・ 1 08 1 1 2 ・・い 3 ・・ 1 1 4 ・・ 1 1 8 1 26 ・ 1 26 ・ ] 27 1 29 ・・ 1 29 ・・ 1 30 ・・ ] 34 ・・ 1 34 ・ 1 36 ・・・ 1 38 ・・ 1 40 ・・ 1 41 ・・ ] 45 ・・ 1 46 ・・・ 148 ・・ ] 53 ・・ ] 54 ・・ 1 56 ・・ ] 58 1 35 145 1 53 1 56

・確保したメモリに値を代入する ・メモリ領域のサイズを変える : 「 ealloc 関数 第 4 章ファイルアクセス ファイルの開閉 ・ファイルを開く : fopen 関数 ・ファイルを閉じる ・ファイル開閉の例 1 文字単位での入出力 ・ファイルに 1 文字書き込む : fputc 関数 ・ファイルから 1 文字読み出す : fgetc 関数 数値や文字列の入出力 ・ファイルに情報を出力する : fp 「 intf 関数 ・ファイルから情報を入力する : fscanf 関数・ ・ファイルから文字列を読み出す : fgets 関数 メモリの内容を直接読み書きする ・メモリの内容をファイルに書き込む : fw 「 ite 関数 ・ファイルからメモリに読み出す : f 「 ead 関数 ・ fw 「 ite ・ f 「 ead 関数を使った例 読み書きの位置の管理 ・読み書き位置を移動する : fsetpos 関数 ・読み書き位置を調べる . fgetpos 関数 ・読み書き位置をファイルの先頭に戻す : 「 ewind 関数・ ・ fsetpos ・ fgetpos ・「 ewind 関数の例・ ファイルやディレクトリの管理 ・ファイルの削除 : unlink 関数 ・ディレクトリの作成 : mkdi 「関数 ・ディレクトリの削除 : 「 mdi 「関数 ・ディレクトリの移動 . chdi 「・ getcwd 関数 ーノンヨンの処理 : chmod ・ stat 関数 ・オーナーとグループの変更 : chown 関数・ ファイルの一覧を得る ・ディレクトリを開く : opendi 「関数 ・ファイルの一覧を得る : 「 eaddi 「関数 ・ディレクトリを閉じる : closedi 「関数 ・・ 1 59 ・・・ 1 6 1 1 66 ・・ 1 66 ・・・ 1 68 ・・ 1 68 1 70 ・・ 1 70 ・・ 1 72 ・・ 1 74 ・・ 1 76 ・・ 1 77 1 74 1 80 ・・ 1 80 ・ 1 8 1 ・・ 182 1 86 ・・ 1 86 ・・・ 1 88 ・・ 1 88 ・・・ 1 89 1 92 ・ 1 92 ・・ 1 93 ・・ 1 94 ・・ 1 95 ・・ 1 96 ・・ 1 99 200 ・・・ 200 ・・ 201 ・・ 202

第 5 章関数とモジュール化 関数の基本 ・「関数」とは ? ・ ・関数を定義する ・関数を呼び出す ・関数の例 { 度しと参照渡し ・変数の値を入れ替える関数 変数の通用範囲と存在時間 ・関数から構造体を返す ・関数から配列を返す ・構造体を関数に渡す ・配列を関数に渡す 配列や構造体の受け渡し ・変数のアドレスを渡す ・引数として渡されるのは「値」 ・プログラムをコンバイルする ・住所録プログラムを複数のソースファイルに分ける ・ヘッダーファイルとソースファイル ・他のソースファイ丿レの外部変数を使う ・ソースファイルの分け方 ソースファイルを複数に分ける ・変数の使い分け ・変数の存在期間 ・変数の通用範囲 ・マクロのメリットとデメリット マクロを定義する ・環境変数の一覧を得る . envi 「 on 変数 ・特定の環境変数の値を得る : getenv 関数 環境変数の取得 ・コマンドライン引数を使う例 ・ main 関数の a 「 gc ・ a 「 gv 引数 コマンドライン引数の取得 第 6 章システムの情報を取得する 206 ・・・ 206 ・・ 207 ・・・ 2 1 0 21 3 ・・・ 2 1 3 ・・ 2 ] 4 ・・・ 2 1 6 220 ・・ 220 ・・・ 224 ・・ 226 ・・・ 228 229 ・・ 229 ・・・ 230 ・・ 233 ・・・ 234 ・・ 235 ・・・ 236 ・・ 238 ・・・ 243 ・・・ 247 234 245 250 ・・ 250 ・・・ 252 255 ・・・ 255 ・・・ 258

・環境変数を設定する : putenv 関数 日付と時刻の取得 ・日付と時刻を得る ・日付・時刻に書式を付ける ユーザー情報の取得 ・ユーザー情報取得の例 コンピュータや OS の情報の取得 ・コンピュータ名の取得 ・ OS 情報の取得 第 7 章画面とキーボードを制御する curses の基本 ・ cu 「 ces を使ったプログラム ・プログラムのコンバイル ・プログラムの実行 画面への出力 ・特殊なキーも入力できるようにする : keypad 関数 ・ 1 文字入力する : getch 関数 ・文字列を入力する : getst 「・ getnst 「関数 ・数値などを入力する : scanw 関数・ ・文字表示の設定 キーボードからの入力 ・画面の内容を読み取る : inch ・ innst 「関数 ・画面の消去 : c 厄 a 「関数 ・画面のスクロール : sc 「 ollok ・ wscrl 関数 ・色の指定 ・文字の属性を変える : att 「 on ・ att 「 off 関数 ・文字の削除 . delch ・ deleteln 関数 ・文字の挿入 : insch ・ insertln 関数 ・表示の更新 . 「 ef 「 esh 関数 ・文字の表示 : addch ・ P 「 intw 関数 ・カーソルの移動 : move 関数 ・・ 259 260 ・・ 260 ・・ 263 266 268 ・・ 267 ・・ 268 ・・ 269 272 ・・・ 272 ・・ 273 ・・ 274 ・・・ 275 ・・ 275 ・ 276 ・・・ 277 ・・ 278 ・・ 280 ・・ 281 ・・ 285 ・・ 287 ・・ 287 275 288 ・・ 288 ・・ 288 ・・ 289 ・・・ 289 ・・・ 293

第 8 章便利なプログラム開発ツール コンバイルを効率よく行う : make ・たくさんのソースファイルをコンバイ丿レするには ・依存関係をファイルに書く ・ make の実行 ・マクロで文字列を置き換える ・複数のターゲットを使う 汎用の関数をライブラリにまとめる ・オブジェクトファイルの作成 ・ヘッダーファイルの作成 ・ライブラリの作成 ・ライブラリの関数を使う ・ライブラリをリンクする プログラムのデバッグ : gdb ・ gdb を使う前の準備 ・ gdb の起動 & 終了 ・ブレークポイントを設定する ・プログラムの実行 ・変数や式の値を表示する ・変数に値を代入する . ar ・条件を満たしたときだけ中断するようにする ・コマンドのヘルプを見る 付録 ビット演算 おもなライブラリ関数 gcc のコマンドラインオプション 300 ・・ 300 ・・ 301 ・・ 304 ・・ 305 ・・ 307 31 0 ・・ 3 1 0 ・・ 3 1 1 ・・ 3 1 1 ・・ 3 1 2 ・・ 3 ] 3 ・・ 3 ] 4 ・・ 3 ] 5 ・・ 3 ] 5 ・・・ 3 ] 8 ・・ 3 1 9 ・・ 322 ・・ 323 ・・ 324 314 326 336 346

奥付

・著者略歴 藤本壱 ( ふじもとはじめ ) 1969 年兵庫県伊丹市生まれ 神戸大学工学部電子工学科を卒業後、パッケージソフトメーカーに入社して 開発に携わる。現在は、パソコン関連のフリーライターとして活動している。 ・主な著書 ・じっくり学ぶ VisuaIBasic 6.0 実践編 ( 工ーアイ出版 ) ・ OS 混在大マニュアル ( 毎日コミュニケーションズ ) ・ Windows Scripting Host 入門 with VBScript ( 毎日コミュニケーションズ ) ・ VisuaIBasic5.0 で作る ActiveX コンポーネント ( ソシム ) ・作ってわかる AT 互換機 98 年版 ( ソシム ) ・ BackOffice SmalI Business Server 導入ガイド ( ソシム ) ・インターネットで始めるホームトレード ( 自由国民社 ) 他多数 新紀元社の新刊・既刊・フェア情報などを、ホームページでご覧いただけます。 ・ http//www.shin kigensha. CO. j p 本書の内容について、ご質問やご意見などがございましたら、下記まで FAX にて お送りください。 ・お問い合わせ FAX 番号 : 03-5228-6232 ( 木馬社 ) 五ロ で LL 1999 年 8 月 5 日初版発行 著者 藤本壱 発行者 高松謙二 発行所 株式会社新紀元社 〒 101-0054 東京都千代田区神田錦町 1-7 錦町一丁目ビル 2F TEL. 03-3291-0961 FAX. 03-3291-0963 郵便振替 00110-4-27618 編集 株式会社新紀元社編集部 木馬社 カバーデサイン柿沼孝一 印刷・製本株式会社オーイ・アート・プリンティング ◎ 1999 新紀元社 Hajime Fujimoto, Printed in Japan 旧 BN4-88317-074-8 本書記事の無断複写・転載を禁じます。 乱丁・落丁本はお取り替えいたします。 定価はカバーに表示してあります。