やさしいC | (SBクリエティブ) |
・書籍中のサンプルコード(第5版) ・セキュリティ強化版サンプルコード(第5版) ・Visual Studioダウンロード |
|
書籍情報 | |
本書は2017年6月に「やさしいC 第5版」として改訂されています。
第1版時の資料 第2版時の資料 第3版時の資料 第4版時の資料 |
|
正誤表 | |
------------------------------------------ (9刷より修正済み) ------------------------------------------ ・429ページ 下から3行目 (誤)これらのマクロは、ソースファイルに関する情報をあらわすものです。 (正)これらのマクロは「組み込みマクロ」と呼ばれ、 ------------------------------------------ (3刷より修正済み) ------------------------------------------ ・309ページ コード中下から5行目 (誤)printf("5人の平均点は%lf点です。\n", ans); (正)printf("5人の平均点は%f点です。\n", ans); ・312ページ コード中下から10行目 (誤)printf("5人の平均点は%lf点です。\n", ans); (正)printf("5人の平均点は%f点です。\n", ans); ・315ページ コード中下から18行目 (誤)printf("5人の平均点は%lf点です。\n", ans); (正)printf("5人の平均点は%f点です。\n", ans); ------------------------------------------ (2刷より修正済み) ------------------------------------------ ・91ページ コード中の3本の引き出し線 (正)1行ずつ下を指す ・389ページ コード中下から5行目 (誤)printf("入力した小数値は%lfです。\n", d); (正)printf("入力した小数値は%fです。\n", d); |
|
第4版の資料 | |
ここより下記は第4版時の資料です。
・書籍中のサンプルコード(第4版)(ZIP圧縮) ・正誤表(第4版) |
|
正誤表(第4版) | |
------------------------------------------ (8刷より修正済み) ------------------------------------------ ・430ページコード中5行目 (誤)strerr,"作成日付:・・・ (正)stderr,"作成日付:・・・ ----------------------------------- (4刷より修正済み) ----------------------------------- ・132ページ図5-10中 2行目 (誤)("1が入力されました。\n)"; (正)("1が入力されました。\n"); |
|
Microsoft Visual C++について | |
本書第4版ではVisual C++ 2010 Express Editionを使用しています。
なお現在(2017.3)は以下よりVisual Studio 2017(Community版)などを利用することができます。 インストール時またはインストールの変更時に、インストーラによって、「C++によるデスクトップ開発」を選択・インストールしておいてください。 ・Visual Studioダウンロード また現在のバージョンでは 標準のstrcpy、strcatなどについてセキュリティに関するエラー(C4996)が出るようになっています。 以下の方法でエラーの取扱を指定しコンパイルすることができます。 ・メニューから[プロジェクト]→[(プロジェクト名)のプロパティ]→左側リストから[構成プロパティ]→[C/C++]→[詳細設定]→右側リスト[指定の警告を無効にする]に「4996」を入力する |
|
第3版の資料 | |
ここより下記は第3版時の資料です。
・書籍中のサンプルコード(第3版)(ZIP圧縮) ・正誤表(第3版) |
|
正誤表(第3版) | |
----------------------------------- (12刷より修正済み) ----------------------------------- 291ページコード部分 下から2行目 (誤)*pX = tmp; (正)*pY = tmp; ----------------------------------- (5刷より修正済み) ----------------------------------- 255ページ 図8-17中 (誤)dint a = 0; (正)int a = 0; |
|
Visual C++ 2010 Express Editionでの実行について | |
本書第3版ではVisual C++ 2005 Express Editionを使用しています。 現在公開されているVisual C++ 2010 Express Editionでは以下の手順を追加してください。 ・viiページ手順4・5のメニューが表示されるようにする メニューから[ツール]→[設定]→[上級者用の設定]を選択してください。 ・viiページ手順5でコマンドプロンプトが継続して表示されるようにする メニューから[プロジェクト]→[プロパティ]を選択し、[構成プロパティ]→[リンカー]→[システム]を選択してください。 [サブシステム]のリストから「コンソール (/SUBSYSTEM:CONSOLE)」を選択します。 |
|
第2版の資料 | |
ここより下記は第2版時の資料です。
・書籍中のサンプルコード(第2版)(LHA圧縮) ・書籍中のサンプルコード(第2版)(ZIP圧縮) ・正誤表(第2版) |
|
正誤表(第2版) | |
291ページコード部分 下から2行目 (誤)*pX = tmp; (正)*pY = tmp; ----------------------------------- (6刷より修正済み) ----------------------------------- p367本文上から4行目 (誤)struct Car2型のほうが (正)struct Car1型のほうが p424 Sample17の実行画面 (誤)変数sumの値 1,2,3,4,5 (正)変数sumの値 0,1,3,6,10 ---------------------------- (4刷より修正済み) ---------------------------- p98 表4-3 (誤)| ビット論理和 左 ^ ビット排他的論理和 左 (正)^ ビット排他的論理和 左 | ビット論理和 左 p452コード中下から6行目 (誤)"\0" (正)'\0' p455コード中上から18行目 (誤)"\0" (正)'\0' |
|
複数ファイルのコンパイル | 第8章の補足 |
第8章などには複数ファイルをコンパイルして実行ファイルを作成するサンプルがあります。たとえば第8章の練習問題5などを実行する場合です。
このようなサンプルでは、 lcc 8_5.c myfunc などと入力し、複数ファイルを指定するコンパイルをしてください (*上記はLSI-C試食版をお使いの場合の方法)。 「複数ファイルのコンパイル方法」は、本書冒頭のツールの説明部分内でふれてあります。 なお、このように複数ファイルを指定しないと、 コンパイル時に「Sample.obj(Sample):Undefined symbol:_power_」などと 表示され、プログラムを実行したときに途中で止まってしまいます。 |
|
入出力関数について | 第12章の補足 |
第12章で使用している入出力関数は、お使いの環境によって結果が異なる場合があります。また、組み合わせて使用することで、結果が異なる場合もあります。本書では冒頭にあげたツールを使って、各関数の最も一般的な用法について説明していますので、さらにすすんだコードに用いる場合には、お使いの環境の説明書もあわせてご覧下さい。 |
|
第1版の資料 | |
ここより下記は第1版時の資料です。
・書籍中のサンプルコード(第1版)(LHA圧縮) ・書籍中のサンプルコード(第1版)(ZIP圧縮) ・正誤表(第1版) |
|
正誤表(第1版) | |
・練習問題 10章の4 3の書き換えコード中 12行目 (誤) printf("1番目の文字列を入力してください。\n", str1); (正) printf("1番目の文字列を入力してください。\n"); 15行目 (誤) printf("2番目の文字列を入力してください。\n", str2); (正)printf("2番目の文字列を入力してください。\n"); p97 表4-3 (誤)| ビット論理和 左 ^ ビット排他的論理和 左 (正)^ ビット排他的論理和 左 | ビット論理和 左 ----------- 2刷にて訂正 ----------- p103コード中 (誤)int inum = (int)dnum; (正)inum = (int)dnum; p104コラム中のコード (誤)double dnum = (double)inum; (正)dnum = (double)inum; p142コード中下から2行目 (誤)printf("%cコースを選択しました\n",res); (正)printf("%cコースを選択しました\n",ans); p391下から2行目 (誤)GoodBye! (正)Goodbye! p426 3問下から3行目 (誤)printf("文字列の長さは%dです。\n",i); (正)printf("文字列の長さは%dです。\n",c); ----------- 3刷にて訂正 ----------- p39 本文2行目 (誤)8進数の「10」は12 (正)8進数の「10」は8 p51 12行目 (誤)00101110 1ビット (正)00101110 1バイト p142 本文2行目 (誤)opetrator (正)operator p199 項目2の3行目 (誤)(test[2])と比較して (正)(test[1])と比較して p201 本文2行目 (誤)ネストしたfor文で (正)for文で p240 本文2行目 (誤)8.3節で定義した (正)8.2節で定義した p267 図8-22 Samplec.の先頭 (誤)#include "myfunc.h" (正)#include <stdio.h> p292 10行目 (誤)printf("変数num1とnum2の値を交換します。\n", num1); (正)printf("変数num1とnum2の値を交換します。\n"); p292 10行目、13行目 (誤)9.3節 (正)9.2節 p294 図9-9内の説明 (誤)*pAはnum1、*pBはnum2 (正)*pXはnum1、*pYはnum2 p308 下から4行目 (誤)第8章 (正)第9章 p310 本文2行目 (誤)仮引数にはtest[]と (正)仮引数にはt[]と p333 コード中7行目 (誤)printf("1番目の文字列を入力してください。\n", str1); (正)printf("1番目の文字列を入力してください。\n"); p333 コード中9行目 (誤)printf("2番目の文字列を入力してください。\n", str2); (正)printf("2番目の文字列を入力してください。\n"); p338 7行目 (誤)int search(char str[], char ch) (正)int search(char str[]) p345 中段引き出し線内 (誤)20.5を代入します。 (正)25.5を代入します。 p352 構造体の初期化構文 (誤){値, 値・・・} (正){値, 値・・・}; p354 コード中13行目 (誤)%lf (正)%f p361 構造体の初期化構文 (誤)52.500000 (正)52.200000 p375 コード中下から4行目 (誤)%lf (正)%f p381 下から2行目 (誤)16数 (正)16進数 p434、p437 コード中 (誤)printf("1番目の文字列を入力してください。\n", num1); ・・・printf("2番目の文字列を入力してください。\n", num2); (正)printf("1番目の文字列を入力してください。\n"); ・・・printf("2番目の文字列を入力してください。\n"); p434 compare関数内 (誤) for(i=0; str1[i]!='\0'; i++){ 〜 return 1; (正) for(i=0; str1[i] == str2[i]; i++){ if(str1[i] == '\0'){ return 1; } } return -1; p437 compare関数内 (誤) while(*str1){ 〜 return 1; (正) while(*str1 == *str2){ if(*str1 == '\0'){ return 1; } str1++; str2++; } return -1; |
|