ホーム » 2011 » 7月 » 05

日別アーカイブ: 2011年7月5日

2011年7月
« 6月   8月 »
 12
3456789
10111213141516
17181920212223
24252627282930
31  

最近の投稿(電子情報)

アーカイブ

カテゴリー

コマンドプロンプトで絶対PATH,相対PATHの演習

コマンドプロンプトで相対PATH,絶対PATHの説明をした後、 以下の演習の内容をレポートとして提出してもらう。

ミニ課題

以下に示すファイルやディレクトリの生成を、コマンドプロンプトを用いた作業で行い、その際にタイプした命令と出力された内容を記載せよ。 ただし各作業では、絶対PATHを使用するとか相対PATHを使用するといった条件を満たすこと。

  1. Z:ドライブ上に、以下のような構造を作成せよ。 作成の際には、絶対PATHのみを使用すること。
  2. 上記のファイルbirthday.txt,like.txt の内容を表示せよ。 ディレクトリの移動には絶対PATHを使用、ファイルの表示には相対PATH。
  3. "cd Z:\20110705\saitoh"でディレクトリを移動した後、自分のbirthday.txt,like.txt を表示する命令を、相対PATHを使用して。 ただしディレクトリの移動はしないこと。
  4. 作成したディレクトリの内容を、すべて削除せよ。相対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 ) ;
}