先週の講義でPATHの概念を説明したので、 授業前半でコマンドラインを用いてPATHの演習を行い、 後半はC言語でのファイル処理ということでfopen,fclose等の説明。
絶対/相対PATHの演習
簡単な演習ということで、Windowsのコマンドライン(cmd.exe)を起動し、 dir , type , cd , mkdir , rmdir , echo string>PATH などのファイル操作を 説明する。
最初は、C:¥Windows¥Help ディレクトリなどを使って ディレクトリの中を色々と移動しながら、絶対PATH/相対PATHを理解してもらう。 後半は、カレントドライブ(Windows固有の概念)を Z: に移動し、 Z:¥Japan¥Fukui¥Echizen¥yourname.txt といったような ディレクトリやファイルを作ったり消したりしながら、コマンドラインの操作を 理解してもらう。 途中、エクスプローラでGUIも横で見ながら、作業をしてもらう。
fopen() , fclose() などの説明
授業の後半は、fopen() , fclose() の説明として、 以下の様なサンプルプログラムを動かして fopen / fclose を説明。 来週は、説明が不十分だった、バイナリモード/テキストモード、 fgets , fputs , fgetc , fputc といった行入力,文字入力を説明し、 その翌週あたりに実際の演習とする予定。
(( fopen / fclose サンプル )) FILE * fp ; if ( (fp = fopen( "hoge.txt" , "rt" )) != NULL ) { int c ; // 入力データが無くなるまで、ファイルから1文字入力し、それを出力。 while( (c = fgetc( fp )) != EOF ) { printf( "%c" , c ) ; } fclose( fp ) ; }
また、fopenでの PATHの指定では、Windowsの場合ディレクトリ区切り文字が "¥"であるため、C言語の文字定数として、"C:¥test.txt" といった書き方を すると、"¥t"の部分がタブ文字として扱われて、ファイルが開けなくなる 可能性があることを説明する。 これらの対応として、WindowsのC言語ではディレクトリ区切り文字に、 "/"も使えることなども補足説明を行う。
FILE* fp ; if ( (fp = fopen( "c:¥¥test.txt" , "rt" )) != NULL ) { char name[ 100 ] ; int point ; int sum = 0 ; while( fscanf( fp , "%s %d" , name , &point ) == 2 ) { printf( "%s さんの点数は %d¥n" , name , point ) ; sum += point ; } printf( "合計は %d¥n" , sum ) ; fclose( fp ) ; }