天天看點

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

繼續閱讀