VC++ファイル読み書きまとめ


一、ファイルオープン関数の概要
1. _open: _open関数は、filenameによって指定されたファイルを開き、読み書きの準備ができます.
2._sopen:
_sopen関数はfilenameで指定されたファイルを開き、共有の読み書き準備をします.
3.fopen:
fopen関数はfilenameで指定されたファイルを開きます(SH_DENYNOは共有読み書きです)
4.fopen_s:
fopen_s関数は、filenameで指定されたファイルを開きます(_SH_SECUREは、読み取り専用モードでのみ共有され、その他の場合は共有されません)
5.freopen:
freopen関数は、現在関連付けられているファイルstreamを閉じ、streamを指定されたファイルpathに再指定します.
6._fsopen:
_fsopen関数は、filenameによって指定されたファイルをストリームとして開き、後続の共有読み書きを行う準備をします.
7._fdopen:
_fdopen関数は、I/Oストリームをfdによって識別されるファイルに関連付け、低レベルI/Oのために開いているファイルをバッファリングおよびフォーマットすることを可能にする.
二、ファイルオープン関数
1. _open:
(1)関数プロトタイプ:int_open(const char*filename,int oflag[,int pmode]); 
(2)機能:_open関数は、filenameで指定されたファイルを開き、読み書きの準備をします.
(3)パラメータ:filenameファイル名;oflagが許可する操作タイプ;pmode権限モード
(4)戻り値:戻り値-1がエラーを示す
(5)詳細:https://msdn.microsoft.com/zh-cn/magazine/z0kc8e3z.aspx
2._sopen:
(1)関数プロトタイプ:int_sopen(const char*filename,int oflag,int shflag[,int pmode]);
(2)機能:_sopen関数は、filenameによって指定されたファイルを開き、oflagおよびshflagによって定義されるように、ファイルを共有する読み書き準備を行う.
(3)パラメータ:filenameファイル名;oflag許可操作タイプ;shflag許可共有タイプ;pmode権限モード
(4)戻り値:戻り値-1がエラーを示す
(5)詳細:https://msdn.microsoft.com/zh-cn/magazine/w7sa2b22.aspx
3.fopen:
(1)関数原型:FILE*fopen(const char*filename,const char*mode);
(2)機能:fopen関数は、filenameで指定されたファイルを開きます.デフォルトでは、ANSIコードページ(CP_ACP)を使用して、狭いfilename文字列を説明します.
(3)パラメータ:filenameファイル名;mode有効アクセスタイプ
(4)戻り値:nullポインタ値がエラーを示す
(5)詳細:https://msdn.microsoft.com/zh-cn/library/yeby3zcb.aspx
4.fopen_s:
(1)関数プロトタイプ:errno_t fopen_s(FILE**pFile,const char*filename,const char*mode); 
(2)機能:fopen_s関数は、filenameで指定されたファイルを開きます.fopen_s共有モードは、_SH_SECUREであり、読み取り専用モードでのみ共有され、その他の場合は共有されません.
(3)パラメータ:pFileはファイルポインタのポインタを指し、ファイルポインタは開いているファイルへのポインタを受信します.filenameファイル名;mode有効なアクセスタイプ
(4)戻り値:成功した場合はゼロ、失敗した場合はエラーコード.
(5)詳細:https://msdn.microsoft.com/zh-cn/library/z5hh6ee9.aspx
5.freopen:
(1)関数原型:FILE*freopen(const char*path,const char*mode,FILE*stream); 
(2)機能:freopen関数は、現在関連付けられているファイルstreamを閉じ、streamを指定されたファイルpathに再指定します.
(3)パラメータ:path新しいファイルのパス;modeが許可するアクセスタイプ;streamはFILE構造のポインタを指す
(4)戻り値:戻り値NULLがエラーを示す
(5)詳細:https://msdn.microsoft.com/zh-cn/magazine/wk2h68td.aspx
6._fsopen:
(1)関数プロトタイプ:FILE*_fsopen(const char*filename,const char*mode,int shflag);
(2)機能_fsopen関数filenameで指定されたファイルをストリーム形式で開き、その後の共有読み書きの準備をする
(3)パラメータ:filename 開くファイルの名前.mode が許可するアクセスタイプ.shflag が許可する共有タイプ.
(4)戻り値:戻り値NULLがエラーを示す
(5)詳細:https://msdn.microsoft.com/zh-cn/magazine/8f30b0db(de-de).aspx
7._fdopen:
(1)関数プロトタイプ:FILE*_fdopen(int fd,const char*mode);
(2)機能:_fdopen関数は、I/Oストリームをfdで識別されたファイルに関連付け、低レベルI/Oのために開いているファイルのバッファリングとフォーマットを可能にする
(3)パラメータ:fdファイルを開くファイル記述子;modeファイルアクセスのタイプ
(4)戻り値:戻り値NULLがエラーを示す
(5)詳細:https://msdn.microsoft.com/zh-cn/magazine/dye30d82.aspx
三、関数の違い
1.参考:http://blog.csdn.net/victor1960/article/details/44460567
http://stackoverflow.com/questions/9738960/what-is-difference-between-sh-secure-and-sh-denywr