C/C++ fopen 用法與範例

本篇 ShengYu 介紹 C/C++ fopen 的用法與範例,C/C++ 不管是文字檔的讀取或寫入都需要先開檔,即使是二進制檔的讀取或寫入也是需要先開檔,詳見本篇範例。

C/C++ 要使用 fopen 的話需要引入的標頭檔 <stdio.h>,如果要使用 C++ 的標頭檔則是引入 <cstdio>
fopen 函式原型為

1
FILE * fopen(const char * filename, const char * mode);

filename:檔案名稱 (可包含路徑)
mode:開檔模式,"r" 開檔且讀取文字檔、"w" 開檔且覆蓋寫入文字檔、"a" 開檔且添加文字檔在檔尾、"rb" 開檔且讀取二進制檔、"wb" 開檔且覆蓋寫入二進制檔、"ab" 開檔且添加二進制在檔尾

以下 C/C++ fopen 的用法介紹將分為這幾部份,

  • C/C++ fopen 開檔並且一次讀取文字檔全部內容
  • C/C++ fopen 開檔並且一次讀取一行
  • C/C++ fopen 開檔並且一次寫入全部文字到檔案
  • C/C++ fopen 開檔並且一次寫入一行

那我們開始吧!

C/C++ fopen 開檔並且一次讀取文字檔全部內容

這邊介紹 C/C++ fopen 開檔並且一次讀取文字檔全部內容,一開始要先用 fopen 開檔,要先 fopen 開檔成功才能進行檔案內容讀取,fopen 開檔回傳 NULL 表示開檔失敗,如果不是 NULL 表示開檔成功,之後用 fread 進行文字檔的讀取,

cpp-fopen.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// g++ cpp-fopen.cpp -o a.out
#include <stdio.h>

int main() {
FILE *fp;
char buffer[1024];
size_t numread;

fp = fopen("input.txt", "r");
if (fp == NULL) {
printf("failed to open the file.\n");
return 1; // EXIT_FAILURE
}

numread = fread(buffer, sizeof(char), 1024, fp);
printf("read %lu bytes\n", numread);
printf("%s\n", buffer);
fclose(fp);
return 0;
}

C/C++ fopen 開檔並且一次讀取一行

這邊介紹 C/C++ fopen 開檔並且一次讀取一行,一開始要先用 fopen 開檔,要先 fopen 開檔成功才能進行檔案內容讀取,fopen 開檔回傳 NULL 表示開檔失敗,如果不是 NULL 表示開檔成功,之後用 fgets 進行文字檔的讀取,如果要讀取多行的話可以搭配 for / while 迴圈使用,

cpp-fopen2.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// g++ cpp-fopen2.cpp -o a.out
#include <stdio.h>

int main() {
FILE *fp;
char buffer[32];

fp = fopen("input.txt", "r");
if (fp == NULL) {
printf("failed to open the file.\n");
return 1; // EXIT_FAILURE
}

fgets(buffer, 32, fp);
printf("%s\n", buffer);
fclose(fp);
return 0;
}

C/C++ fopen 開檔並且一次寫入全部文字到檔案

這邊介紹 C/C++ fopen 開檔並且一次寫入全部文字到檔案,一開始要先用 fopen 開檔,要先 fopen 開檔成功才能對檔案寫入,fopen 開檔回傳 NULL 表示開檔失敗,如果不是 NULL 表示開檔成功,之後用 fwrite 將文字寫入檔案裡,

cpp-fopen3.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
// g++ cpp-fopen3.cpp -o a.out
#include <stdio.h>

int main() {
FILE *fp;
char buffer[1024] = "hello world\n123456\n";
size_t numwritten;

fp = fopen("output.txt", "w");
if (fp == NULL) {
printf("failed to open the file.\n");
return 1; // EXIT_FAILURE
}

numwritten = fwrite(buffer, sizeof(char), 24, fp);
printf("write %zu bytes\n", numwritten);
fclose(fp);
return 0;
}

C/C++ fopen 開檔並且一次寫入一行

這邊介紹 C/C++ fopen 開檔並且一次寫入一行,一開始要先用 fopen 開檔,要先 fopen 開檔成功才能對檔案寫入,fopen 開檔回傳 NULL 表示開檔失敗,如果不是 NULL 表示開檔成功,之後用 fputs 將文字寫入檔案裡,fputs 會將字串寫入直到遇見結束字元為止,如果要寫入多行的話可以搭配 for / while 迴圈使用,

cpp-fopen4.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// g++ cpp-fopen4.cpp -o a.out
#include <stdio.h>

int main() {
FILE *fp;

fp = fopen("output.txt", "w");
if (fp == NULL) {
printf("failed to open the file.\n");
return 1; // EXIT_FAILURE
}

fputs("hello world\n", fp);
fclose(fp);
return 0;
}

以上就是 C/C++ fopen 的用法與範例介紹,
如果你覺得我的文章寫得不錯、對你有幫助的話記得 Facebook 按讚支持一下!

其它相關文章推薦
如果你想學習 C++ 相關技術,可以參考看看下面的文章,
C/C++ 新手入門教學懶人包
C/C++ fread 用法與範例
C/C++ fgets 用法與範例
C/C++ fwrite 用法與範例
C/C++ fputs 用法與範例
C/C++ fclose 用法與範例