日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

【C++ 语言】文件操作 ( fopen | fprintf | fscanf | fgets | fputc | fgetc | ofstream | ifstream )

發布時間:2025/6/17 c/c++ 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【C++ 语言】文件操作 ( fopen | fprintf | fscanf | fgets | fputc | fgetc | ofstream | ifstream ) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

        • I C 函數 fopen 打開文件
        • II C 函數 fprintf 寫出文件
        • III C 函數 fscanf 讀取文件 ( 遇到空格換行結束)
        • IV C 函數 fgets 讀取文件 ( 遇到換行結束)
        • V C 函數 fputc 寫出單個字符
        • VI C 函數 fgetc 讀取單個字符
        • VII C++ IO 流
        • VIII 文件操作代碼示例



I C 函數 fopen 打開文件



跨平臺開發時使用 C++ 對文件讀寫不經常使用 , 主要使用 C 語言對文件進行讀寫操作 ;

1. C 文件打開 :

  • ① 頭文件 : stdio.h
  • ② 原型 : FILE* fopen ( const char* path , const char* mode ) ;

2. 參數解析 :

  • ① const char* path : 要打開的文件路徑 , 可以是相對路徑 , 也可以是絕對路徑 ;
  • ② const char* mode : 打開文件的模式 ;

3. 文件打開模式只讀或只寫操作 :

  • ① " r " : 打開已經存在的文本文件 , 只讀操作 ;
  • ② " w " : 打開文本文件 , 只寫操作 , 從開始開始寫入內容 ;
    • a. 文件不存在 : 創建新文件 , 從開頭寫入內容 ;
    • b. 文件存在 : 刪除原有內容 , 從開頭寫入內容 ;
  • ③ " a " : 打開文件文件 , 只寫操作 , 追加寫入內容 ;
    • a. 文件不存在 : 創建新文件 , 從開頭寫入內容 ;
    • b. 文件存在 : 在原有文件基礎上 , 追加寫入內容 ;

4. 文件打開模式讀寫操作 :

  • ① " r+ " : 打開文本文件 , 讀寫操作 ;
  • ② " w+ " : 打開文本文件 , 讀寫操作 ; 從開始開始寫入內容 ;
    • a. 文件不存在 : 創建新文件 , 從開頭寫入內容 ;
    • b. 文件存在 : 刪除原有內容 , 從開頭寫入內容 ;
  • ③ " a+ " : 打開文本文件 , 讀寫操作 ; 追加寫入內容 ;
    • a. 文件不存在 : 創建新文件 , 從開頭寫入內容 ;
    • b. 文件存在 : 在原有文件基礎上 , 追加寫入內容 ;


II C 函數 fprintf 寫出文件



fprintf 函數簡介 :

  • ① 頭文件 : stdio.h
  • ② 函數原型 : int fprintf (FILE* stream, const char*format, [argument])
  • ③ 參數 1 ( FILE * stream ) : FILE 指針 , 指向標識文件流的對象 ;
  • ④ 參數 2 ( const char * format ) : C 字符串 , 要寫出的文本 , 包含占位符 ;
  • ⑤ 參數 3 ( [argument] ) : 字符串中的占位符參數列表 ;
  • ⑤ 函數作用 : 根據規定的數據格式 , 向輸出流中寫出數據 ;

代碼示例 :

//1. fprintf 寫出文本//創建一個只寫的文件 , 每次執行都重新寫入內容// 這里使用相對路徑 , 直接在代碼路徑下創建一個文件FILE* file_text_write = fopen("my_file.txt", "w");//文本形式寫出內容 : 使用格式化的方式輸出文本內容fprintf(file_text_write, "姓名:%s 學號:%d", "Tom", 1);//關閉文件 , 只有有 fopen , 就必須有對應的 fclose 與之對應fclose(file_text_write);

III C 函數 fscanf 讀取文件 ( 遇到空格換行結束)



fscanf 函數簡介 :

  • ① 頭文件 : stdio.h
  • ② 函數原型 : int fscanf(FILE * stream, const char * format, [argument...]);
  • ③ 參數 1 ( FILE * stream ) : FILE 指針 , 指向標識文件流的對象 ;
  • ④ 參數 2 ( const char * format ) : C 字符串 , 聲明讀取的數據類型 ;
  • ⑤ 函數作用 : 根據規定的數據格式 , 從輸入流中讀取數據 ;

fscanf 與 fgets 函數對比 :

  • ① fscanf 遇到空格 , 換行 結束讀取 ;
  • ② fgets 遇到空格時不結束讀取 , 遇到換行時結束 ;

代碼示例 :

//2. fscanf 讀取文本//以只讀形式打開FILE* file_text_read_fscanf = fopen("my_file.txt", "r");//讀取文件//定義讀取文件文本的緩沖區 , 最大可以讀取 1024 個字符char buffer[1024];//如果沒有遇到結尾 , 就一直讀取while (!feof(file_text_read_fscanf)){//參數1 : 文件指針 , 參數2 : 占位符 , 參數3 : 接收的緩沖區// 該方法遇到空格 , 會中斷讀取 , 因此這里要循環讀取數據fscanf(file_text_read_fscanf, "%s", buffer);cout << "fscanf 讀取到的文本內容 : " << buffer << endl;}//對應fopenfclose(file_text_read_fscanf);

執行結果 : 遇到空格讀取就會中斷 , 這里循環了 2 次將文件讀取完畢 ;

fscanf 讀取到的文本內容 : 姓名:Tom fscanf 讀取到的文本內容 : 學號:1

IV C 函數 fgets 讀取文件 ( 遇到換行結束)



1. fgets 函數簡介 :

  • ① 頭文件 : stdio.h
  • ② 函數原型 : char *fgets(char *str, int n, FILE *stream);
  • ③ 參數 1 ( char *str ) : 字符指針 , 指向讀取文件字符串的緩沖區 ;
  • ④ 參數 2 ( int n ) : 緩沖區中可讀取的最大字符數 ;
  • ⑤ 參數 3 ( FILE *stream ) : FILE 指針 , 指向標識文件流的對象 ;
  • ⑤ 函數作用 : 從輸入流中讀取一行文本數據 , 并將文本存儲到字符數組緩沖區中 ;

2. fscanf 與 fgets 函數對比 :

  • ① fscanf 遇到空格 , 換行 結束讀取 ;
  • ② fgets 遇到空格時不結束讀取 , 遇到換行時結束 ;

3. 代碼示例 :

//3. fgets 讀取指定大小的文本//以只讀形式打開FILE* file_text_read_fgets = fopen("my_file.txt", "r");//讀取文件//定義讀取文件文本的緩沖區 , 最大可以讀取 1024 個字符char buffer1[1024];//參數1 : 接收的緩沖區 , 參數2 : 讀取的字節數 , 參數3 : 文件指針// 該方法遇到空格 , 會繼續讀取 , 因此這里只需要讀取一次即可fgets(buffer1, 1024, file_text_read_fgets);cout << "fgets 讀取到的文本內容 : " << buffer1 << endl;//對應fopenfclose(file_text_read_fgets);

4. 執行結果 :

fgets 讀取到的文本內容 : 姓名:Tom 學號:1

V C 函數 fputc 寫出單個字符



1. fputc 函數簡介 :

  • ① 頭文件 : stdio.h
  • ② 函數原型 : int fputc (int c, File *fp)
  • ③ 參數 1 ( int c ) : 要寫出的字符 ;
  • ④ 參數 2 ( File *fp ) : 文件指針 ;
  • ⑤ 函數作用 : 向文件中寫出一個單個字符 ;
  • ⑥ 返回值 : 如果寫出成功 , 返回寫出字符的 ASCII 值 , 如果寫出失敗 , 返回 EOF 即 -1 ;

2. 代碼示例 :

//4. 寫出單個字符FILE* file_text_read_fputc = fopen("my_file.txt", "w");//寫出單個字符串fputc('A', file_text_read_fputc);//關閉文件fclose(file_text_read_fputc);

VI C 函數 fgetc 讀取單個字符



1. fgetc 函數簡介 :

  • ① 頭文件 : stdio.h
  • ② 函數原型 : int fgetc(FILE *stream)
  • ④ 參數 ( File *stream ) : 文件指針 ;
  • ⑤ 函數作用 : 從文件流中讀取一個字符 ;
  • ⑥ 返回值 : 從文件中讀取的字符 ASCII 碼值 ;

2. 代碼示例 :

//5. 讀取單個字符FILE* file_text_read_getc = fopen("my_file.txt", "r");//讀取單個字符串int fgetc_result = fgetc(file_text_read_getc);//將 int 類型變量轉為 char 類型變量char fgetc_result_char = fgetc_result;cout << "fgetc 讀取的單個字符 : " << fgetc_result_char << endl;//關閉文件fclose(file_text_read_getc);

3. 執行結果 :

fgetc 讀取的單個字符 : A

VII C++ IO 流



1. C++ 中主要使用以下三個數據類型進行 IO 流操作 ;

  • ofstream : 文件輸出流 , 向文件寫出內容 ( 如果沒有文件會創建文件 ) ;
  • ifstream : 文件輸入流 , 讀取文件內容 ;
  • fstream : 文件輸入輸出流 , 兼顧上述兩種輸入輸出流的功能 ;

2. 創建輸出流 ofstream : 直接聲明 ofstream 對象即可 ;

//創建 io 輸出流ofstream io_out_file_stream;

3. 打開文件輸出流 : 調用 ofstream 對象的 open() 方法 , 即可打開文件的輸出流 , 可以用于向文件中寫入數據 ;

//使用 io_out_file_stream 打開或創建文件io_out_file_stream.open("io_file.txt");

4. 從命令行讀取數據 : 使用 cin >> io_buffer; 指令 , 可以阻塞命令行 , 等待用戶輸入文本信息 ; io_buffer 是一個 char 數組緩沖區 ;

//該操作會阻塞命令行 , 等待用戶輸入文本信息cin >> io_buffer;

5. 向文件中寫出數據 : io_out_file_stream << io_buffer << endl; , 向 io_out_file_stream 輸出流中寫入數據 , 即將緩沖區中的內容寫出到了文件中 ;

// 向文件寫入用戶輸入的數據io_out_file_stream << io_buffer << endl;

6. 創建輸入流 : 聲明 ifstream 類型對象 , 即創建了一個文件輸入流對象 ;

//打開輸入流ifstream io_in_file_stream;

7. 打開文件輸入流 : 調用 ifstream 文件輸入流對象的 open 方法 , 即可獲取指定路徑文件的輸入流 ;

//打開文件io_in_file_stream.open("io_file.txt");

8. 讀取文件中的內容 : 調用 io_in_file_stream >> io_buffer; , 可以將文件內容讀取到 io_buffer 緩沖區中 ;

//將文件內容讀取到緩沖區中io_in_file_stream >> io_buffer;

9. 代碼示例 :

//7. C++ 流操作// ( 1 ) 寫出數據到文件//創建緩沖區char io_buffer[100];//創建 io 輸出流ofstream io_out_file_stream;//使用 io_out_file_stream 打開或創建文件io_out_file_stream.open("io_file.txt");//命令行中進行提示cout << "輸入你的名字: ";//該操作會阻塞命令行 , 等待用戶輸入文本信息cin >> io_buffer;// 向文件寫入用戶輸入的數據io_out_file_stream << io_buffer << endl;//關閉輸出流io_out_file_stream.close();// ( 2 ) 從文件讀取數據//打開輸入流ifstream io_in_file_stream;//打開文件io_in_file_stream.open("io_file.txt");cout << "讀取文件" << endl;//將文件內容讀取到緩沖區中io_in_file_stream >> io_buffer;//將緩沖區中內容打印到控制臺cout << "讀取的文件內容 : " << io_buffer << endl;// 關閉io_in_file_stream.close();

10. 執行結果 :

輸入你的名字: 1 讀取文件 讀取的文件內容 : 1

VIII 文件操作代碼示例



代碼調用示例 :

// XI . IO流//1. fprintf 寫出文本//創建一個只寫的文件 , 每次執行都重新寫入內容// 這里使用相對路徑 , 直接在代碼路徑下創建一個文件FILE* file_text_write = fopen("my_file.txt", "w");//文本形式寫出內容 : 使用格式化的方式輸出文本內容fprintf(file_text_write, "姓名:%s 學號:%d", "Tom", 1);//關閉文件 , 只有有 fopen , 就必須有對應的 fclose 與之對應fclose(file_text_write);//2. fscanf 讀取文本//以只讀形式打開FILE* file_text_read_fscanf = fopen("my_file.txt", "r");//讀取文件//定義讀取文件文本的緩沖區 , 最大可以讀取 1024 個字符char buffer[1024];//如果沒有遇到結尾 , 就一直讀取while (!feof(file_text_read_fscanf)){//參數1 : 文件指針 , 參數2 : 占位符 , 參數3 : 接收的緩沖區// 該方法遇到空格 , 會中斷讀取 , 因此這里要循環讀取數據fscanf(file_text_read_fscanf, "%s", buffer);cout << "fscanf 讀取到的文本內容 : " << buffer << endl;}//對應fopenfclose(file_text_read_fscanf);//3. fgets 讀取指定大小的文本//以只讀形式打開FILE* file_text_read_fgets = fopen("my_file.txt", "r");//讀取文件//定義讀取文件文本的緩沖區 , 最大可以讀取 1024 個字符char buffer1[1024];//參數1 : 接收的緩沖區 , 參數2 : 讀取的字節數 , 參數3 : 文件指針// 該方法遇到空格 , 會繼續讀取 , 因此這里只需要讀取一次即可fgets(buffer1, 1024, file_text_read_fgets);cout << "fgets 讀取到的文本內容 : " << buffer1 << endl;//對應fopenfclose(file_text_read_fgets);//4. 寫出單個字符FILE* file_text_read_fputc = fopen("my_file.txt", "w");//寫出單個字符串fputc('A', file_text_read_fputc);//關閉文件fclose(file_text_read_fputc);//5. 讀取單個字符FILE* file_text_read_getc = fopen("my_file.txt", "r");//讀取單個字符串int fgetc_result = fgetc(file_text_read_getc);//將 int 類型變量轉為 char 類型變量char fgetc_result_char = fgetc_result;cout << "fgetc 讀取的單個字符 : " << fgetc_result_char << endl;//關閉文件fclose(file_text_read_getc);//6. 讀寫二進制文件 使用 fwrite 與 fread 讀寫文件//7. C++ 流操作// ( 1 ) 寫出數據到文件//創建緩沖區char io_buffer[100];//創建 io 輸出流ofstream io_out_file_stream;//使用 io_out_file_stream 打開或創建文件io_out_file_stream.open("io_file.txt");//命令行中進行提示cout << "輸入你的名字: ";//該操作會阻塞命令行 , 等待用戶輸入文本信息cin >> io_buffer;// 向文件寫入用戶輸入的數據io_out_file_stream << io_buffer << endl;//關閉輸出流io_out_file_stream.close();// ( 2 ) 從文件讀取數據//打開輸入流ifstream io_in_file_stream;//打開文件io_in_file_stream.open("io_file.txt");cout << "讀取文件" << endl;//將文件內容讀取到緩沖區中io_in_file_stream >> io_buffer;//將緩沖區中內容打印到控制臺cout << "讀取的文件內容 : " << io_buffer << endl;// 關閉io_in_file_stream.close();

執行結果 :

fscanf 讀取到的文本內容 : 姓名:Tom fscanf 讀取到的文本內容 : 學號:1 fgets 讀取到的文本內容 : 姓名:Tom 學號:1 fgetc 讀取的單個字符 : A 輸入你的名字: 1 讀取文件 讀取的文件內容 : 1

總結

以上是生活随笔為你收集整理的【C++ 语言】文件操作 ( fopen | fprintf | fscanf | fgets | fputc | fgetc | ofstream | ifstream )的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。