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