ためになるホームページ お問い合わせ




TOP > C言語 > 低水準入出力
低水準入出力
オペレーションシステムを直接呼び出して、ストリーム入出力よりも低水準の操作を行う。データのバッファリングや書式化はできない。

ファイルを開く
_open関数を使う。但し、GCC環境ではopen関数である。以下の内容は全てwindowsのVC上での内容である。
_open関数は、ファイルオープンに失敗すると「-1」を返す。
(書式) int _open(const char* filename, int option, [, int access mode]);
filename ファイルオープンするファイル名
option オプション
access mode アクセスモード
戻り値 ファイルハンドル
_open関数を使用するには、io.hヘッダーをインクルードする必要がある。

主なオプションは、ファイルをどのようにオープンするかを指定する。オプションのマクロはfcntl.hに定義されているので、インクルードする必要がある。
_O_APPEND ファイル書き込み前に、ファイルポインタをファイルの終端に移動
_O_BINARY ファイルをバイナリモードで開く
_O_CREAT 新規ファイルを作成し、書き込みモードで開く
_O_RDONLY ファイルを読み出し専用で開く
_O_RDWR 読み出しモードと書き込みモードで開く
_O_TEXT テキストモードで開く
_O_WRONLY 書き込み専用モードで開く
これらのオプション値は、or(|)で複数指定する事ができる。

アクセスモードは、_O_CREATEを指定した時のみ有効である。新規のファイルのアクセスモードを指定する。
_S_IREAD 読み出し許可
_S_IWRITE 書き込み許可
_S_IREAD | _S_IWRITE 書き込みと読み出し許可

ファイルを閉じる
ファイルオープンをしたら、ファイルを閉じなければならない。GCC環境ではclose、Windows環境では_closeを使う。
(書式)_close(int file_handle);
file_handle ファイルハンドル

_openと_closeの例
#include <stdio.h>
#include <io.h>
#include <fcntl.h>

int main(int argc, char** argv)
{
  int f_handle;
  //読み出し専用で開く
  if ((f_handle = _open("open.c", _O_RDONLY)) == -1)
  {
    perror("ファイルが開けませんでした\n");
  }
  else
  {
    printf ("ファイルが開けました\n");
    _close(f_handle);
  }
  return(0);
}







Copyright 2007 ためになるホームページ All Rights Reserved.