_fsopen _wfsopen

與檔案共用中開啟資料流。

FILE *_fsopen( 
   const char *filename,
   const char *mode,
   int shflag 
);
FILE *_wfsopen( 
   const wchar_t *filename,
   const wchar_t *mode,
   int shflag 
);

參數

  • filename
    若要開啟的檔案名稱。

  • mode
    許可的存取類型。

  • shflag
    允許共用型別。

傳回值

每個函式會傳回指標至資料流。 Null指標值,指出發生錯誤。 如果filename或mode是NULL或空字串,這些函式呼叫不正確的參數處理常式中,如所述參數驗證。 如果執行則允許繼續執行,則這些函數會傳回NULL ,並設定errno到EINVAL。

如需有關這些及錯誤的詳細資訊,請參閱 _doserrno、 errno、 _sys_errlist,以及 _sys_nerr

備註

_fsopen函式會開啟所指定的檔案filename當做資料流,來準備檔案後續的共用的讀取或寫入,所定義的模式和shflag引數。 _wfsopen是寬字元版本的**_fsopen**。 filename和mode引數去**_wfsopen是寬字元字串。 _wfsopen_fsopen**其他方式完全相同。

字元字串mode指定的存取要求的檔案類型,如下表所示。

詞彙

定義

"r"

開啟進行讀取。 如果檔案不存在或找不到, _fsopen呼叫失敗。

"w"

開啟空白檔案進行寫入。 如果指定的檔案存在,其內容已終結。

"a"

會開啟以進行書寫 (附加) ; 該檔案的結尾 如果不存在,請先建立檔案。

"r+"

會開啟以進行讀取和寫入。 (檔案必須存在)。

"w+"

開啟空白的檔案來讀取和寫入。 如果指定的檔案存在,其內容已終結。

"a+"

會開啟以進行讀取和附加。 如果不存在,請先建立檔案。

使用"w"和"w+"類型請小心,因為它們可以摧毀現有的檔案。

當開啟檔案時使用"a"或"a+"存取型別,所有寫入作業就會發生在檔案結尾處。 可以使用調整檔案指標的位置fseekrewind,但它一律移至檔案結尾之前任何寫入作業會執行。 因此,無法覆寫現有的資料。 當"r+", "w+",或"a+"存取型別指定,則允許讀取和寫入 (檔案即為開啟更新)。 不過,當讀取和寫入時,必須要有介入之間的切換 fsetposfseek,或 倒轉作業。 目前的位置,請指定給fsetposfseek作業,如有需要。 除了上述的值,下列某些字元可包含在mode ,指定換行字元,以及檔案管理的轉譯模式。

詞彙

定義

t

(轉譯) 的文字模式來開啟檔案。 在此模式中,換行字元 return–線條送紙 (CR-LF) 組合時,會轉譯成單一線條餵送 (LF) 上,輸入並 LF 字元會轉譯為在輸出的 CR LF 組合。 此外,CTRL + Z 組合鍵會解譯成輸入的檔案結尾字元。 在 [檔案開啟進行讀取或讀取/寫入, _fsopen檢查 CTRL + Z 結尾的檔案並移除它,如果可能的話。 這是因為使用fseekftell CTRL + Z 組合鍵以結束,可能會導致檔案內移動fseek檔案的結尾附近不當的行為。

b

開啟檔案以二進位(未轉譯的) 模式。 上述的轉譯將被抑制。

S

指定的最佳化,但不是限於,循序存取從磁碟快取。

R

指定快取是最適合,但不是會受到於隨機存取磁碟。

T

指定暫存檔案。 如果可能的話,就沒有轉存到磁碟。

D

指定暫存檔案。 它會刪除最後一個檔案指標關閉時。

如果t或b不會列在mode,轉譯模式由預設模式定義變數**_fmode**。 如果t或b做為前置詞引數,在函式失敗,並傳回NULL。 文字和二進位模式的說明,請參閱文字和二進位模式的檔案 I/O

引數shflag是常數運算式所組成的下列資訊清單定義的常數,在 Share.h 中的其中一個。

詞彙

定義

_SH_COMPAT

設定為 16 位元應用程式的相容性模式。

_SH_DENYNO

允許讀取和寫入權限。

_SH_DENYRD

拒絕讀取存取檔案。

_SH_DENYRW

拒絕讀取和寫入檔案的存取權。

_SH_DENYWR

拒絕寫入存取權的檔案。

泛用文字常式對應

Tchar.h常式

_Unicode 之後,未定義的 _MBCS

定義的 _MBCS

定義 _unicode 之後

_tfsopen

_fsopen

_fsopen

_wfsopen

需求

Function

所需的標題

選擇性標頭

_fsopen

<stdio.h>

<share.h>

資訊清單的常數,如shflag參數。

_wfsopen

<stdio.h> 或者 <wchar.h>

<share.h>

資訊清單的常數,如shflag參數。

範例

// crt_fsopen.c

#include <stdio.h>
#include <stdlib.h>
#include <share.h>

int main( void )
{
   FILE *stream;

   // Open output file for writing. Using _fsopen allows us to
   // ensure that no one else writes to the file while we are
   // writing to it.
    //
   if( (stream = _fsopen( "outfile", "wt", _SH_DENYWR )) != NULL )
   {
      fprintf( stream, "No one else in the network can write "
                       "to this file until we are done.\n" );
      fclose( stream );
   }
   // Now others can write to the file while we read it.
   system( "type outfile" );
}
  

.NET Framework 對等用法

請參閱

參考

資料流 I/O

fclose _fcloseall

_fdopen _wfdopen

ferror

_fileno

fopen _wfopen

freopen _wfreopen

_open _wopen

_setmode

_sopen _wsopen