C 庫 - fwrite() 函式



C 庫的 fwrite() 函式將資料從 `ptr` 指向的陣列寫入給定的流。

語法

以下是 C 庫 fwrite() 函式的語法:

size_t fwrite(const void *ptr, size_t size, size_t nmemb, FILE *stream);

引數

此函式接受以下引數:

  • const void *ptr: 指向要寫入的元素陣列的指標。

  • size_t size: 要寫入的每個元素的位元組大小。
  • size_t nmemb: 元素數量,每個元素的大小為 `size` 位元組。

  • FILE *stream: 指向 FILE 物件的指標,該物件標識將寫入資料的流。

返回值

fwrite() 函式返回成功寫入的元素總數。如果此數字小於 nmemb,則表示發生了錯誤或已到達檔案末尾。

示例 1

將整數陣列寫入二進位制檔案

此示例將整數陣列寫入名為 example1.bin 的二進位制檔案。輸出確認所有 5 個元素都已成功寫入檔案。

#include <stdio.h>

int main() {
   FILE *fp;
   int arr[] = {1, 2, 3, 4, 5};
   size_t n = sizeof(arr) / sizeof(arr[0]);

   fp = fopen("example1.bin", "wb");
   if (fp == NULL) {
      perror("Error opening file");
      return 1;
   }

   size_t written = fwrite(arr, sizeof(int), n, fp);
   printf("Number of elements written: %zu\n", written);

   fclose(fp);
   return 0;
}

輸出

以上程式碼產生以下結果:

Number of elements written: 5

示例 2

將字串寫入文字檔案

此示例將字串寫入名為 example3.txt 的文字檔案。輸出表明 13 個字元(包括感嘆號)已成功寫入檔案。

#include <stdio.h>
#include <string.h>

int main() {
   FILE *fp;
   const char *str = "Hello, World!";

   fp = fopen("example3.txt", "w");
   if (fp == NULL) {
      perror("Error opening file");
      return 1;
   }

   size_t written = fwrite(str, sizeof(char), strlen(str), fp);
   printf("Number of elements written: %zu\n", written);

   fclose(fp);
   return 0;
}

輸出

執行上述程式碼後,我們得到以下結果:

Number of elements written: 13
廣告