名稱空間
變體
操作

fwrite

來自 cppreference.com
< c‎ | io
 
 
檔案輸入/輸出
型別和物件
        
函式
檔案訪問
(C95)
非格式化輸入/輸出
(C95)(C95)
(C95)
(C95)(C95)
(C95)
(C95)

格式化輸入
 
定義於標頭檔案 <stdio.h>
size_t fwrite( const void* buffer, size_t size, size_t count,
               FILE* stream );
(直到 C99)
size_t fwrite( const void* restrict buffer, size_t size, size_t count,
               FILE* restrict stream );
(C99 起)

將給定陣列 buffer 中的 count 個物件寫入輸出流 stream。寫入物件的方式是,將每個物件重新解釋為 unsigned char 陣列,併為每個物件呼叫 fputc size 次,以按順序將這些 unsigned char 寫入 stream。流的檔案位置指示器將前進寫入的字元數。

如果發生錯誤,流的檔案位置指示器的結果值將是不確定的。

目錄

[編輯] 引數

buffer - 指向要寫入陣列中第一個物件的指標
size - 每個物件的大小
count - 要寫入的物件數量
stream - 指向輸出流的指標

[編輯] 返回值

成功寫入的物件數量,如果發生錯誤,該數量可能小於 count

如果 sizecount 為零,fwrite 返回零並且不執行其他操作。

[編輯] 示例

#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
 
enum { SIZE = 5 };
 
int main(void)
{
    double a[SIZE] = {1, 2, 3, 4, 5};
    FILE* f1 = fopen("file.bin", "wb");
    assert(f1);
    size_t r1 = fwrite(a, sizeof a[0], SIZE, f1);
    printf("wrote %zu elements out of %d requested\n", r1, SIZE);
    fclose(f1);
 
    double b[SIZE];
    FILE* f2 = fopen("file.bin", "rb");
    size_t r2 = fread(b, sizeof b[0], SIZE, f2);
    fclose(f2);
    printf("read back: ");
    for (size_t i = 0; i < r2; ++i)
        printf("%0.2f ", b[i]);
}

輸出

wrote 5 elements out of 5 requested
read back: 1.00 2.00 3.00 4.00 5.00

[編輯] 參考

  • C23 標準 (ISO/IEC 9899:2024)
  • 7.21.8.2 fwrite 函式 (p: TBD)
  • C17 標準 (ISO/IEC 9899:2018)
  • 7.21.8.2 fwrite 函式 (p: TBD)
  • C11 標準 (ISO/IEC 9899:2011)
  • 7.21.8.2 fwrite 函式 (p: 335-336)
  • C99 標準 (ISO/IEC 9899:1999)
  • 7.19.8.2 fwrite 函式 (p: 301-302)
  • C89/C90 標準 (ISO/IEC 9899:1990)
  • 4.9.8.2 fwrite 函式

[編輯] 另請參閱

將格式化輸出列印到 stdout、檔案流或緩衝區
(函式) [編輯]
將字元字串寫入檔案流
(函式) [編輯]
從檔案讀取
(函式) [編輯]
C++ 文件 中關於 fwrite