スライド 1

アルゴリズムとデータ構造
補足資料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