Standard Input/Output and Redirection

(標準入出力とリダイレクト)

Computing Practice I

4th lecture, April 28, 2016

http://www.sw.it.aoyama.ac.jp/2016/CP1/lecture4.html

Martin J. Dürst

Today's Schedule

 

ミニテスト

 

C 言語の最初の本

 

前回の演習結果

03B1 03C1 03C2 03C3 03C4
100点 86 57 28 21 12
60点 2 31 58 59 62
部分点 - - - - 4
エラー - - 2 2 1
未提出 1 1 1 7 10

 

前回の演習について

 

Exercise 03C1

(Analysis of Student Numbers)

Length of Solutions

Lines Bytes
Longest 174 7574
Shortest 45 1143

 

Rolling Pin Program

Problems:

 

DRY

 

The DRY Principle

 

直積の具体例


数物理 化学 電気 機械 経シス 情テク ...
19xx






200x






20xx






 

Representation of Strings

 

Representation of Line Breaks

C on Windows: automatic conversion between CRLF (in file) and LF (in program)

 

入出力の主な関数


入力 出力
一文字 getchar() putchar(char c)
一行 gets(char* buffer) fgets(char*, int, stdin) puts(char* string)
フォーマット付き scanf(char* format,...) (%s) printf(char* format,...)

 

関数の学習

 

入出力関数の戻り値

 

入力の定石

具体例:

while ((c = getchar()) != EOF) { ... }

 

Buffer Overflow

C 言語のメモリの扱い:

 

gets の問題点

(演習問題 04B1 参照)

 

scanf の要点

例: scanf ("%lf", &doubleVar);

printf と少々書き方が違う

%sgets と同様に大問題 (演習問題 04B1 参照)

 

標準入出力

 

リダイレクトとパイプ

 

標準入出力の応用

 

標準入出力によるプログラムのテスト

 

Why Tests?

 

今週の演習問題

04A1: 一文字の入力と出力 ('\''\ の文字列ではなく、' 一文字 (\ でエスケープ))

04A2: 文字の番号の調査

04A3: 大文字と小文字の入れ替え

04B1: バグの入ったプログラムの分析と修正 (今日必ず先生に提出)

04B2: 様々な型の入出力 (教科書 pp. 385-387 参照)

04C1 (部分点): ヒント: 入力の一文字ずつ枝分かれを使うか、小さいバッファーに一文字ずらしながら読み込むなど
挑戦 (部分点) は必須、完成は発展問題、月曜日締切

 

次回の準備

 

Glossary

rolling pin
麺棒
principle
原則
function
関数
string
文字列
byte array
バイトの配列
interpret
解釈する
null character
ナル文字
input
入力
output
出力
buffer overflow
バッファ・オーバーフロー
standard input/output
標準入出力
specification (document)
仕様 (書)
bug
バグ
regression test
退行テスト、回帰テスト、再帰テスト