C 語言中寫入檔案
Jinku Hu
2023年10月12日
本文將演示關於如何在 C 語言中向檔案寫入的多種方法。
C 語言中使用 fwrite
函式寫入檔案
C 語言的標準 I/O 庫提供了讀/寫檔案的核心函式,即 fread
和 fwrite
。fwrite
需要四個引數,一個 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 <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.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);
}
作者: Jinku Hu