C 語言中寫入檔案

Jinku Hu 2023年1月30日 2021年2月7日
  1. C 語言中使用 fwrite 函式寫入檔案
  2. C 語言中使用 write 函式寫入檔案
C 語言中寫入檔案

本文將演示關於如何在 C 語言中向檔案寫入的多種方法。

C 語言中使用 fwrite 函式寫入檔案

C 語言的標準 I/O 庫提供了讀/寫檔案的核心函式,即 freadfwritefwrite 需要四個引數,一個 void 指標,表示資料應該從哪裡獲取,給定指標處資料元素的大小和數量,一個 FILE*指標,表示輸出檔案流。

需要注意的是,開啟檔案流應該先用 fopen 函式開啟,該函式取所需模式的檔名並返回 FILE*。本例中,我們使用 w+ 模式開啟檔案進行讀寫。不過要注意,如果檔案不存在,就會用給定的檔名建立一個新的檔案。接下來,我們將檢查返回的檔案流指標是否有效。如果不是,就會列印相應的錯誤資訊,並退出程式。一旦檔案流指標得到驗證,就可以呼叫 fwrite 函式。請記住,在程式退出之前應該用 fclose 函式關閉檔案。

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

const char *str = "Temporary string to be written to file!";

int main(void) {
    const char* filename = "out.txt";

    FILE* output_file = fopen(filename, "w+");
    if (!output_file) {
        perror("fopen");
        exit(EXIT_FAILURE);
    }

    fwrite(str, 1, strlen(str), output_file);
    printf("Done Writing!\n");

    fclose(output_file);
    exit(EXIT_SUCCESS);
}

C 語言中使用 write 函式寫入檔案

另外,我們也可以使用 write,這是一個符合 POSIX 標準的函式呼叫,它將給定的位元組數寫入檔案描述符所引用的檔案中。注意,檔案描述符是一個與開啟的檔案流相關聯的整數。為了檢索描述符,我們應該用檔名路徑呼叫 open 函式。write 函式以檔案描述符為第一個引數,以 void*指向的資料緩衝區為第二個引數。第三個引數是要寫入檔案的位元組數,在下面的例子中用 strlen 函式計算。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
#include <unistd.h>

const char *str = "Temporary string to be written to file!";

int main(void) {
    const char* filename = "out.txt";

    int fd = open(filename, O_WRONLY);
    if (fd == -1) {
        perror("open");
        exit(EXIT_FAILURE);
    }

    write(fd, str, strlen(str));
    printf("Done Writing!\n");

    close(fd);
    exit(EXIT_SUCCESS);
}
Author: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn

相關文章 - C File