アルゴリズムとデータ構造 補足資料6-1 「サンプルプログラムcat1.c」 横浜国立大学 理工学部 数物・電子情報系学科 富井尚志
/. アルゴリズムとデータ構造 サンプルプログラム cat1 /**************************************************************** アルゴリズムとデータ構造 サンプルプログラム cat1.c <<ファイルの例: 標準入力を標準出力にコピー>> copyright (c) 1995,96,97 T.Mori <mori@forest.dnj.ynu.ac.jp> ****************************************************************/ #include <stdio.h> main() { int c; /* 入力文字 */ while ( ( c = getchar( ) ) != EOF ) /* EOFが現れるまで標準入力から文字を読み */ putchar(c); /* それを印刷 */ exit(0); }
標準入力 stdin テキストは、ストリーム(列)として扱われる。 stdin は、通常はキーボードからの入力をストリームとする。 入力のリダイレクション(“<”記号)によって、ファイルを標準入力に接続できる。 (ファイルを入力のストリームとする)
テキストファイル test1.txt ファイルの内容は「文字列」:テキストストリーム ‘ ’(スペース)や‘\n’(改行)も1文字 h i s a t e f l . \n f i l e c o n t a s w . \n EOF ファイルの内容は「文字列」:テキストストリーム ‘ ’(スペース)や‘\n’(改行)も1文字 EOFはファイルの終わりを示す (厳密には、EOFは文字ではない)
リダイレクションによるファイルと標準入力(出力)の接続 入力のリダイレクションによって、test1.txtはstdinに接続される。 (キーボードから1文字ずつ入力したのと同じ) T h i s a t e f l . \n f i l e c o n t a s w . \n EOF cat1 は、stdin の先頭から1文字ずつ入力を受け取る。 プログラム cat1 stdin stdout cat1 は 1文字ずつ stdout に出力する。 cat1 < test1.txt
リダイレクションによるファイルと標準入力(出力)の接続 入力のリダイレクションによって、test1.txtはstdinに接続される。 (キーボードから1文字ずつ入力したのと同じ) T h i s a t e f l . \n f i l e c o n t a s w . \n EOF T c = getchar( ) ? c stdin
リダイレクションによるファイルと標準入力(出力)の接続 入力のリダイレクションによって、test1.txtはstdinに接続される。 (キーボードから1文字ずつ入力したのと同じ) T h i s a t e f l . \n f i l e c o n t a s w . \n EOF c = getchar( ) T c
リダイレクションによるファイルと標準入力(出力)の接続 入力のリダイレクションによって、test1.txtはstdinに接続される。 (キーボードから1文字ずつ入力したのと同じ) T h i s a t e f l . \n f i l e c o n t a s w . \n EOF purchar(c) T c
リダイレクションによるファイルと標準入力(出力)の接続 入力のリダイレクションによって、test1.txtはstdinに接続される。 (キーボードから1文字ずつ入力したのと同じ) T h i s a t e f l . \n f i l e c o n t a s w . \n EOF cat1 は 1文字ずつ stdout に出力する。 → 画面にTが表示される。 purchar(c) T c T stdout
リダイレクションによるファイルと標準入力(出力)の接続 入力のリダイレクションによって、test1.txtはstdinに接続される。 (キーボードから1文字ずつ入力したのと同じ) T h i s a t e f l . \n 1文字進む f i l e c o n t a s w . \n EOF h c = getchar( ) T c stdin
リダイレクションによるファイルと標準入力(出力)の接続 入力のリダイレクションによって、test1.txtはstdinに接続される。 (キーボードから1文字ずつ入力したのと同じ) T h i s a t e f l . \n f i l e c o n t a s w . \n EOF c = getchar( ) h c
リダイレクションによるファイルと標準入力(出力)の接続 入力のリダイレクションによって、test1.txtはstdinに接続される。 (キーボードから1文字ずつ入力したのと同じ) T h i s a t e f l . \n f i l e c o n t a s w . \n EOF purchar(c) h c
リダイレクションによるファイルと標準入力(出力)の接続 入力のリダイレクションによって、test1.txtはstdinに接続される。 (キーボードから1文字ずつ入力したのと同じ) T h i s a t e f l . \n f i l e c o n t a s w . \n EOF cat1 は 1文字ずつ stdout に出力する。 → (Tに続けて)画面にhが表示される。 purchar(c) h c h stdout
リダイレクションによるファイルと標準入力(出力)の接続 入力のリダイレクションによって、test1.txtはstdinに接続される。 (キーボードから1文字ずつ入力したのと同じ) T h i s a t e f l . \n 1文字進む f i l e c o n t a s w . \n EOF i c = getchar( ) i c stdin
リダイレクションによるファイルと標準入力(出力)の接続 入力のリダイレクションによって、test1.txtはstdinに接続される。 (キーボードから1文字ずつ入力したのと同じ) T h i s a t e f l . \n f i l e c o n t a s w . \n EOF cat1 は 1文字ずつ stdout に出力する。 → (hに続けて)画面にiが表示される。 purchar(c) i c i stdout
リダイレクションによるファイルと標準入力(出力)の接続 入力のリダイレクションによって、test1.txtはstdinに接続される。 (キーボードから1文字ずつ入力したのと同じ) T h i s a t e f l . \n 1文字進む f i l e c o n t a s w . \n EOF s c = getchar( ) s c stdin
リダイレクションによるファイルと標準入力(出力)の接続 入力のリダイレクションによって、test1.txtはstdinに接続される。 (キーボードから1文字ずつ入力したのと同じ) T h i s a t e f l . \n f i l e c o n t a s w . \n EOF cat1 は 1文字ずつ stdout に出力する。 → (iに続けて)画面にsが表示される。 purchar(c) s c s stdout
リダイレクションによるファイルと標準入力(出力)の接続 入力のリダイレクションによって、test1.txtはstdinに接続される。 (キーボードから1文字ずつ入力したのと同じ) T h i s a t e f l . \n … 1文字ずつ進む f i l e c o n t a s w . \n EOF … cat1 は 1文字ずつ stdout に出力する。 c = getchar( ) … c … stdin stdout
リダイレクションによるファイルと標準入力(出力)の接続 入力のリダイレクションによって、test1.txtはstdinに接続される。 (キーボードから1文字ずつ入力したのと同じ) T h i s a t e f l . \n f i l e c o n t a s w . \n EOF … ファイルの終わり c = getchar( ) EOF c stdin
リダイレクションによるファイルと標準入力(出力)の接続 入力のリダイレクションによって、test1.txtはstdinに接続される。 (キーボードから1文字ずつ入力したのと同じ) T h i s a t e f l . \n f i l e c o n t a s w . \n EOF … ファイルの終わり c = getchar( ) EOF c stdin 終了