5.ファイルの入出力C言語では、ファイルを操作するのにFILE構造体のポインタを使用します。以下は指定したファイルの中身をコンソールに出力するサンプルプログラムです。 1: #include <stdio.h>
2:
3: int main(int argc,char *argv[]){
4: FILE *fp;
5: char line[256];
6:
7: if(argc!=2){
8: exit(1);
9: }
10:
11: if((fp=fopen(argv[1],"r"))==NULL){
12: exit(1);
13: }
14:
15: while(fgets(line,256,fp)!=NULL){
16: puts(line);
17: }
18:
19: fclose(fp);
20:
21: return(0);
22:}
5.1.main関数の引数main関数は、int型とchar型のポインタ配列(ポインタを要素とする配列)を引数として取ることができます。 これらはプログラムの実行時に、コマンドラインで指定されたオプションを受け取るために用意されています。1つ目の引数には指定されたオプションの個数が、2つ目の引数にはオプションの値が順に格納されます。たとえば「sample.exe」というプログラムが以下のようにコンソールで実行された場合、 $ ./sample.exe test1 test2 argcには「3」、argv[1]には「test1」、argv[2]には「test2」という値が格納されます。argv[0]には「./sample.exe」という値が格納されており、どんな場合でもargcの値は1以上になるようになっています。サンプルプログラムでは、7行目でオプションの個数が1個であるかどうか判定しており、11行目で1つ目のオプションで指定されたファイルをオープンしています。 5.2.fopenとfcloseファイル操作ではまず「fopen」関数でファイルを開き、その時に得るファイルポインタを通じてファイルを操作します。そして最後に「fclose」関数でファイルを閉じます。サンプルプログラムでは11行目で指定されたファイルを開き、19行目でファイルを閉じています。 fopen関数は2つの引数を取り、第1引数で開きたいファイルの名前、第2引数でファイルを開くときのモードを指定します。"r"は読み取りモードで開くことを示しています。"w"は上書き、"a"は追加書き込み、"r+"および"w+"は読み書きモードです。fopenはファイルのオープンに成功するとFILE構造体のポインタを返し、失敗した場合はNULLを返します。 fclose関数は引数で指定されたFILEポインタが示すファイルをクローズします。Cのプログラムは、終了時にオープンしているファイルがあれば自動的にクローズします。したがってfcloseを使用しなくてもプログラム上問題ありませんが、使用する方が望ましいです。 5.3.fgets「fgets」はファイルから1行ずつ読み込む関数です。引数は3つで、1つ目が読み込んだ値を格納する変数、2つ目が読み込む値の最大文字数、3つ目が対象のファイルポインタです。fgetsはファイルから1行読み込むか最大文字数に達した場合に処理を終了し、指定された変数に読み込んだ値を格納します。また処理が終了すると同時に、読み込み地点を読み込んだ分だけ先に進めます。したがって繰り返しfgetsを実行すれば、ファイルの先頭から終了までを読み込んでいくことができます。またファイルの終了地点でfgetsはNULLを返すので、それと同時に繰り返し処理を終了すればよいです(15行目)。ファイルの読み込みに失敗した場合にも、fgetsはNULLを返します。 (実習課題)以下のプログラムを作成しなさい。
(実習課題)以下のプログラムを作成しなさい。
(実習課題)以下のプログラムを作成しなさい。3章の課題の改良です。
|
![]()
![]()
|