コマンドプロンプトで絶対PATH,相対PATHの演習
コマンドプロンプトで相対PATH,絶対PATHの説明をした後、 以下の演習の内容をレポートとして提出してもらう。
ミニ課題
以下に示すファイルやディレクトリの生成を、コマンドプロンプトを用いた作業で行い、その際にタイプした命令と出力された内容を記載せよ。 ただし各作業では、絶対PATHを使用するとか相対PATHを使用するといった条件を満たすこと。
- Z:ドライブ上に、以下のような構造を作成せよ。 作成の際には、絶対PATHのみを使用すること。
- 上記のファイルbirthday.txt,like.txt の内容を表示せよ。 ディレクトリの移動には絶対PATHを使用、ファイルの表示には相対PATH。
- "cd Z:\20110705\saitoh"でディレクトリを移動した後、自分のbirthday.txt,like.txt を表示する命令を、相対PATHを使用して。 ただしディレクトリの移動はしないこと。
- 作成したディレクトリの内容を、すべて削除せよ。相対PATHや絶対PATHの方法は問わない。
Z:¥--+--[20110705]--+--[自分の名前]--+--(birthday.txt) 内容は誕生日 | +--(like.txt) 内容は好きな物 | +--[saitoh]----+--(birthday.txt) 1965/02/07 +--(like.txt) cats...
C言語でファイル操作
C言語での簡単なファイル操作ということで、下記のようなプログラムを示す。 特に「Windowsのディレクトリ名区切り文字がC言語のエスケープ文字」にあたるため、 問題が発生することを説明する。
#include <stdio.h> void main() { FILE* fp ; fp = fopen( "Z:¥¥abc.txt" , "r" ) ; if ( fp != NULL ) { char name[ 20 ] ; int age ; while( fscanf( fp , "%s%d" , name , &age ) == 2 ) { printf( "%s %d¥n" , name , age ) ; } fclose( fp ) ; } }
当面はOSと絡んだC言語での注意点を説明するのが目標。 来週は、fopen( … , "r" ) での「テキストモード/バイナリモード」の説明を行う予定。
絶対/相対PATHの演習とファイル処理
先週の講義で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 ) ; }