2 ファイル処理の概要

2.1 ファイル処理とは

本講義のメインテーマである数値計算では大量の数値を扱い,それはハードディスクに保 存することが多い.いちいち紙に計算結果を書き写すことは不可能なためである.数値計 算に限らず,実験で取得したデータもハードディスクに保存することが多い.なにせ,デー タの取得にコンピューターを利用するのは普通のことである.そのデータを処理して,意 味のある量に加工するのである.数値計算や実験など,理科系の仕事に限らず,現代社会 での大量の情報は全てハードディスクに保存される--と言っても過言ではない.

このようなことから,ファイル処理--ここではハードディスクへのデータの入出力--は, コンピューターを上手に使う必須のテクニックである.ファイル処理の技術を習得し,コ ンピューターを自在に活用して欲しい.これができるようになると,コンピューターの応 用がかなり拡がる.卒研などで,大変重宝するだろう.

2.2 ファイル処理の体験

2.2.1 ファイル出力

ごちゃごちゃと説明するよりも,実際にファイル処理のプログラムを示した方がわかりや すいだろう.いままで,ディスプレイに出力していた"Hello World !!"をファイルに書き 出す.リスト1のプログラムでそれが実現できる.ディスプレイに表示す るprintf()という関数の代わりに,fprintf()関数を使うのである. fprintf()関数がファイルに文字を書き出すのである.前後に少し,おまけがついて いるが,ほとんど同じである.
   1 #include <stdio.h>
   2 
   3 int main(void){
   4   FILE *hoge;
   5 
   6   hoge=fopen("hello.txt","w");
   7 
   8   fprintf(hoge,"Hello World !!\n");
   9 
  10   fclose(hoge);
  11 
  12   return 0;
  13 }
\fbox{実行結果}

リスト1を実行すると,hello.txtというファイルができあがる.そ のファイルの中には,以下のような文字が書かれている.

Hello World !!

このプログラムの各行の内容は,次の通りである.文法の詳細については,後で説明する. fprintf()関数でファイルに文字を書くことができる--ということを理解せねばならな い.

[練習1]
自分の名前を,ファイルに書き出すプログラムを作成せよ.そして, 実行してファイルのデータを確認せよ.
[練習2]
ファイルに,以下の内容を書き出すプログラムを作成せよ.
===============================================
Akita National College of Technology
  Dept. of Electrical and Computer Engineering

   Yamamoto Masashi

        TEL/FAX 018-847-6044
        e-mail yamamoto@akita-nct.jp
===============================================

2.2.2 ファイル入力

ファイルに文字を書く方法は分かった.次に,ファイルから文字を読み込んでみよう.先 ほど作成したファイル(hello.txt)の内容を読み,それを画面に出力する.リスト 2が,そのプログラムである.
   1 #include <stdio.h>
   2 
   3 int main(void){
   4   FILE *fuga;
   5   char a[32], b[32], c[32];
   6 
   7   fuga = fopen("hello.txt", "r");
   8 
   9   fscanf(fuga, "%s%s%s", a, b, c);
  10 
  11   fclose(fuga);
  12 
  13   printf("%s %s %s\n", a, b, c);
  14 
  15   return 0;
  16 }
\fbox{実行結果}

このプログラムを実行すると,hello.txtというファイルから文字を読み込み,ディ スプレイに,以下のように表示される.

Hello World !!

このプログラムの各行の内容は,次の通りである.ここでの文法の詳細についても後で説明する. fscanf()でファイルから文字を読み取ることができる--ことを理解しなくてはばならない.

[練習3]
自分の名前が書かれたファイルを読み込んで,ディスプレイに表示す るプログラムを作成せよ.



ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
平成19年7月4日


no counter