本篇 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 進行文字檔的讀取,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
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 迴圈使用,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
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 將文字寫入檔案裡,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
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 迴圈使用,1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16// g++ cpp-fopen4.cpp -o a.out
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 用法與範例