Provided by: manpages-zh_1.5.1-1_all bug

NAME

       fopen, fdopen, freopen - 打開流

SYNOPSIS`覽
       #include <stdio.h>

       FILE *fopen(const char *path, const char *mode);
       FILE *fdopen(int fildes, const char *mode);
       FILE *freopen(const char *path, const char *mode, FILE *stream);

DESCRIPTIONyz
       函數 fopen 打開檔名為 path 指向的字符串的檔案,將一茯y與它關聯。

       參數 mode 指向一茼r符串,以下列序列之一開始 (序列之後可以有附加的字符):

       r      打開純文字檔,用於讀。流被定位於檔案的開始。

       r+     打開純文字檔,用於讀寫。流被定位於檔案的開始。

       w      將檔案長度截斷為零,或者創建純文字檔,用於寫。流被定位於檔案的開始。

       w+     打開檔案,用於讀寫。如果檔案不存在就創建它,否則將截斷它。流被定位於檔案的開始。

       a      打開檔案,用於追加
              (在檔案尾寫)。如果檔案不存在就創建它。流被定位於檔案的末尾。

       a+     打開檔案,用於追加
              (在檔案尾寫)。如果檔案不存在就創建它。讀檔案的初始位置是檔案的開始,但是輸出總是被追加到檔案的末尾。

       字符串   mode   也可以包含字母   ``b''   作為最後一茼r符,或者插入到上-
       探ㄗ鴘漸籉鬋蠾r符的字符串的兩茼r符中間。這樣只是為了和 ANSI X3.159-1989
       (``ANSI   C'')   標準嚴格保持相容,沒有實際的效果;在所有的遵循   POSIX
       的系統中,``b''                                          都被忽略,包括
       Linux。(其他系統可能將純文字檔和二進制檔案區別對待,如果在進行二進制檔案的
       I/O,那麼添加   ``b''   是茼n主意,因為你的程式可能會被移植到非    Unix
       環境中。)

       任何新建的檔案將具有模式
       S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH
       (0666),然後以進程的掩碼 umask 加以蚹 (參見 umask(2)) 。

       在讀/寫流上進行的讀和寫操作可以以任意的順序混合使用。注意     ANSI    C
       n求檔案定位函數只能插入在輸出和輸入之間,除非輸入操作遇到了檔案結束符。(如果沒有遇到這種情況,那麼讀取總是能返回除了最近寫入內容之外的結果。)
       因此,最好             (在             Linux            中有時是必須的)
       在對這樣的流進行的寫和讀操作之間加入一 fseek  或是  fgetpos  操作。這-
       蚞犑@可以是對顯式的定位的調用    (例如在   fseek(...,   0L,   SEEK_CUR)
       中那樣),利用同時發生的副作用。(?)

       以追加方式打開檔案 (以 a 作為 mode  的第一茼r符)  將使得所有後續的對這-
       茯y的寫操作發生在檔案末尾,就好像在寫之前調用了
              fseek(stream,0,SEEK_END);
       一樣。

       函數  fdopen  將一茯y關聯到已存在的檔案描z符,  fildes.   流的模式 mode
       (取  "r",  "r+",  "w",   "w+",   "a",   "a+"   之一)   必須與檔案描-
       z符的模式想匹配。新的流的定位標識被設置為         fildes         鴞釭-
       A錯誤和檔案結束標記被清除。模式 "w" 或者  "w+"  不會截斷檔案。檔案描-
       z符不會被複製,在關閉由                                          fdopen
       創建的流時,也不會被關閉。對共享記憶體對象實施                   fdopen
       的結果是未定義的。

       函數   freopen   打開名稱為   path   指向的字符串的檔案,將它與  stream
       指向的流關聯。初始的流 (如果存在的話) 被關閉。參數 mode 與在函數  fopen
       中用法一P。函數  freopen 主n的用處是改變與標準文本流 (stderr, stdin, 或
       stdout) 相關聯的檔案

RETURN VALUE^
       如果成弘鶡璊F  fopen,  fdopenfreopen  將返回一茷向檔案對象  FILE
       的指針。否則,將返回 NULL 並將設置全局變量 errno 的茷示錯誤發生。

ERRORS

       EINVALfopen, fdopen, 或 freopen 提供的參數 mode 非法。

       函數  fopen,  fdopenfreopen  也有可能失敗並置  errnomalloc(3)
       指定的C

       函數 fopen 也有可能失敗並置 errnoopen(2) 指定的C

       函數 fdopen 也有可能失敗並置 errnofcntl(2) 指定的C

       函數 freopen 也有可能失敗並置 errnoopen(2), fclose(3) 和  fflush(3)
       指定的C

CONFORMING TO考
       函數  fopenfreopen  遵循 ANSI X3.159-1989 (``ANSI C'') 標準。函數
       fdopen 遵循 IEEE Std1003.1-1988 (``POSIX.1'') 標準。

SEE ALSO見
       open(2), fclose(3), fileno(3)