Index: [Article Count Order] [Thread]

Date:  Sun, 5 Nov 95 18:09:50 JST
From:  Masanobu KOGA/古賀雅伸  <koga>
Subject:  fopen(), fclose(), fpritnf(), fscanf()
To:  MaTX@mei.titech.ac.jp (MaTX ML)
Posted:  Sun, 05 Nov 1995 18:09:44 +0900
X-Mail-Count: 00083

古賀@東工大です。

小野> MaTXで、fopenやfscanfのような関数が使えれば、どのような場合でも、
小野> 一応対処できると思うのですが、どうでしょう?  MATLABには、そのよう
小野> な関数が用意されているので、よく利用しています。
 
宮腰>   MATLABでも .mat と同じ形式のファイルを読み込むものだとばかり
宮腰> 思っていたのですが、違うという事が分かって、結局 .mat 形式の
宮腰> ファイルを読み込む関数を作るはめになりました。この手の命令があると
宮腰> 最終的には(頑張って関数を作れば)お手上げにならないで済むので、
宮腰> 保証としてあった方が良いかもしれませんね。
宮腰>   古賀さんが対処されるようですので、後は寝て待つだけ ? (^_^;
宮腰>   ちなみに MATLAB で実現されている fscanf とかは、私はあまり
宮腰> 使い易いと思いません。慣れていないせいもあるのでしょうけど。
宮腰> C言語のそれと使い方を混同して、しばらくはまりました。

作ってみました。

fopen(path, mode)        ファイルをオープンする
fclose(fd);              ファイルをクローズする
fprintf(fd, format, ...) フォーマットにしたがってファイルに出力する
fscanf(fd, format)       フォーマットにしたがってファイルから入力する

 ◎ fscanf()は読み込んだデータからなるリストを返します。

【例題】 

Func void main()
{
    Integer a;
    Real b;
    String c;
    Integer id1, id2;

    if ((id1 = fopen("afo", "w")) < 0) {   
        error("Can't open %s", "afo");   
    }
    fprintf(id1, "%d %lf %s", 10, 3.1415, "Hello");  
    fclose(id1);

    if ((id2 = fopen("afo", "r")) < 0) {   
        error("Can't open %s", "afo");   
    }
    {a, b, c} = fscanf(id2, "%d %lf %s");
    fclose(id2);    

    print a, b, c;
}

C言語のプログラムなのかMaTXのプログラムなのか
分からなくなりそうですが,こんなかんじでどうでしょう?

--
古賀  雅伸
koga@mei.titech.ac.jp