/* -*- MaTX -*- * * 【名前】 * fopen() - ファイルをオープンする * * 【形式】 * fd = fopen(file, mode) * Integer fd; * String file, mode; * * 【機能説明】 * fopen(file, mode)は,ファイル file をオープン(データを読み書き * する準備を)する。オープンに成功すると正の整数(ファイルディスク * リプタ),オープンに失敗すると負の整数を返す。mode には,以下に * 示す文字列を組み合わせて用いる。 * * "r" : 読み込み用 * "w" : 書き込み用 * "a" : 追加書き込み用 * "b" : バイナリモードでオープン * * オープンしたファイルは,ファイルディスクリプタを使ってアクセス * する。不要になったファイルは fclose() で閉じる。 * * 【例題】 * ファイル afo を書き込み用にオープンし,関数 fprintf() でデータを * 書き込む。次に,同じファイルを読み込み用にオープンし,fscanf()で * データを読み込む。fscanf()は,読み込んだデータからなるリストを返す。 * * if ((fd1 = fopen("afo", "w")) < 0) { * error("Can't open %s", "afo"); * } * fprintf(fd1, "%d %f %s", 10, 3.1415, "Hello"); * fclose(fd1); * * if ((fd2 = fopen("afo", "r")) < 0) { * error("Can't open %s", "afo"); * } * {a, b, c} = fscanf(fd2, "%d %lf %s"); * fclose(fd2); * * ファイル data をバイナリモードでオープンし,5 個の int 型の * バイナリデータを読み込む。 * * if ((fd3 = fopen("data", "rb")) < 0) { * error("Can't open %s", "data"); * } * B = fread(fd3, 5, "int"); * fclose(fd3); * * ファイル data2 をバイナリモードでオープンし,行列 A を int 型 * のバイナリデータとして保存する * * A = [1 2 3 4 5]; * if ((fd4 = fopen("data2", "wb")) < 0) { * error("Can't open %s", "data2"); * } * fwrite(fd4, A, "int"); * fclose(fd4); * * 【関連項目】 * fclose(), fscanf(), fprintf(), fgets(), fread(), fwrite() */