アルゴリズムとデータ構造 補足資料6-2 「サンプルプログラムcat2.c」 横浜国立大学 理工学部 数物・電子情報系学科 富井尚志 /**************************************************************** アルゴリズムとデータ構造 サンプルプログラム cat2.c <<ファイルの例: 入力ファイルを出力ファイルにコピー>> copyright (c) 1995,96,97 T.Mori <[email protected]> ****************************************************************/ #include <stdio.h> main() { int c; FILE *infp,*outfp; infp = fopen("test1.txt","r"); /* test1.txt を読み出し用に開く.入力ファイル */ outfp = fopen("testout.txt","w"); /* testout.txt を書き込み用に開く.出力ファイル */ while ((c = getc(infp)) != EOF) /* EOFが現れるまで入力ファイルから文字を読み */ putc(c, outfp); /* 出力ファイルに書き込む */ fclose(infp); fclose(outfp); exit(0); } /* 各ファイルを閉じる */ ファイル構造体FILE とファイルポインタ • OS (ファイルシステム)を通して、特定のファ イルにアクセスする。 • 「ファイルハンドラ」として、ファイルポインタを 割り当てる。 • プログラムからは、ファイルの「現在位置」に 対して読み出し(入力)や書き込み(出力)が できる。 テキストファイル 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 一般的なファイルアクセス fopen関数を用いて、ファイルポインタinfpに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 EOF cat2 は、infpの先頭から1文字ずつ入力を受け取る。 infp プログラム cat2 outfp cat2は 1文字ずつ outfp に出力する。 fopen関数を用いて、ファイルポインタoutfpにtestout.txtを割り当てる。 アクセスの方法は、「書き込み」(出力) 一般的なファイルアクセス fopen関数を用いて、ファイルポインタinfpにtest1.txtを割り当てる。 アクセスの方法は、「読み出し」(入力) T h i s i s f i l e T infp a t e s t c o n t a i n s c ? c = getc( infp ) f i l e . \n t w o T h i s l i n e s . \n EOF 一般的なファイルアクセス fopen関数を用いて、ファイルポインタinfpに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 c T c = getc( infp ) f i l e . \n t w o T h i s l i n e s . \n EOF 一般的なファイルアクセス fopen関数を用いて、ファイルポインタinfpに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 c T putc (c, outfp) f i l e . \n t w o T h i s l i n e s . \n EOF 一般的なファイルアクセス fopen関数を用いて、ファイルポインタinfpに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 c T putc (c, outfp) f i l e . \n t w o T h i s l i n e s . \n EOF cat2は 1文字ずつ outfp に出力する。 → testout.txtに’T’が書き込まれる。 outfp T 一般的なファイルアクセス fopen関数を用いて、ファイルポインタinfpにtest1.txtを割り当てる。 アクセスの方法は、「読み出し」(入力) 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 infp c o n t a i n s c h c = getc( infp ) t w o l i n e s . \n EOF 一般的なファイルアクセス fopen関数を用いて、ファイルポインタinfpに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 c h putc (c, outfp) f i l e . \n t w o T h i s l i n e s . \n EOF cat2は 1文字ずつ outfp に出力する。 → testout.txtに(’T’に続けて) ’h’が書き込まれる。 outfp h 一般的なファイルアクセス fopen関数を用いて、ファイルポインタinfpにtest1.txtを割り当てる。 アクセスの方法は、「読み出し」(入力) 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 infp i c = getc( infp ) t w o l i n e s . \n EOF 一般的なファイルアクセス fopen関数を用いて、ファイルポインタinfpに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 c i putc (c, outfp) f i l e . \n t w o T h i s l i n e s . \n EOF cat2は 1文字ずつ outfp に出力する。 → testout.txtに(’h’に続けて) ’i’が書き込まれる。 outfp i 一般的なファイルアクセス fopen関数を用いて、ファイルポインタinfpにtest1.txtを割り当てる。 アクセスの方法は、「読み出し」(入力) T h i s i s a t e s t … f i l e … infp T h i s 1文字ずつ進む c o n t a i n s c f i l e . \n … c = getc ( infp ) putc( c, outfp) t w o l i n e s . \n EOF cat2は 1文字ずつ outfp に出力する。 → testout.txtの最後尾に 出力された文字が書き込まれる。 outfp … 一般的なファイルアクセス fopen関数を用いて、ファイルポインタinfpに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 … ファイルの 終わり infp c EOF c = getc ( infp ) EOF 一般的なファイルアクセス fclose関数を用いて、 ファイルポインタoutfpを閉じる fclose関数を用いて、 ファイルポインタinfpを閉じる c infp EOF fclose ( infp ) fclose ( outfp ) outfp 終了
© Copyright 2024 ExpyDoc