タグ: language-c

演習5-10 K&R プログラミング言語C

演習5-10 4.3 外部変数 K&R プログラミング言語C の逆ポーランド計算機をコマンド引数の文字列を利用するように修正する。 積算の記号 * は、コマンド引数ではシェルに展開されてしまうので x を利用する。 #include <stdio.h> #include <stdlib.h> #include <ctype.h> #define NUM…続きを読む

演習5-8 K&R プログラミング言語C

演習5-8 月数の範囲を 1〜12、日数の範囲を 1〜daytab[leap][month]、通算日を 1〜365 + leap 以下に限定してチェックを行う。 month_day はエラー時には EXIT_FAILURE を返して関数から抜けるので、返り値 int を返すように修正する。 #include <stdio.h> #include <stdlib.h> int…続きを読む

演習5-7 K&R プログラミング言語C

演習5-7 読み込んだ各行文字列を保存するのに alloc の代わりに配列を引数として渡す。 lineptr には配列内の各行文字列の先頭になる配列要素のポインタを保存していく。 buf_lines : |h|e|l|l|o|\0|w|o|r|l|d|\0|f|r|o|m| … lineptr : ^ ^ ^ プログラムの実行速度は、ほとんど変化がわからなかった。 #include <s…続きを読む

演習5-4 K&R プログラミング言語C

演習5-4 t のポインタを文字列終端に移動させる際に、条件節で i をインクリメントしているのは、終端に到達した際にもインクリメントするため。 これは、文字列の比較が終端文字から始まるため。 文字列 t が文字列 s の終わりに存在すれば i は 0 までデクリメントされる。 #include <stdio.h> int strend(char*, char*); int main(…続きを読む

5.4 アドレス計算 K&R プログラミング言語C

5.4 アドレス計算 正常にアドレスを指し示すポインタは 0 にはならない。 0 は異常値を表し、stdio.h で定義されている NULL を使う。 ポインタは同じ配列の要素を指し示している場合には、==, !=, <, >, <=, >= などの関係演算子を利用できる。 ポインタと整数との間の加減算は、ポインタが指し示すオブジェクトの型のサイズに応じて適切にスケールされ…続きを読む