(C/C++) FILE 讀寫檔案操作

在C/C++ 讀寫檔案操作比較常見應該是利用 FILE、ifstream、ofstream

在這篇筆記裡頭記錄 FILE、fstream 使用方法及操作

 1 #include <iostream>
 2 #include <stdio.h>
 3 #include <stdlib.h>
 4 #include <fstream>
 5
 6 using namespace std;
 7
 8
 9 int main()
10 {
11     /*
12         r : open for reading
13         rb : open for reading in binary mode
14         w : open for writing
15         wb : open for writing in binary mode
16         r+ : support read and write. the file must exit.
17         w+ : it like r+ funciton that will recover the file with same file name if file name exit.
18     */
19     FILE *pFile;
20
21     /* open and create the file */
22     pFile = fopen("temp.txt", "w+");
23     char buffer[] = "write string test";
24     char *rd_buffer;
25     /* write the buffer to text file */
26     fwrite(buffer, sizeof(char), sizeof(buffer), pFile);
27     /* close file */
28     fclose(pFile);
29
30     pFile = fopen("temp.txt", "r+");
31     /* assign read buffer size */
32     rd_buffer = (char*)malloc(sizeof(char)* sizeof(buffer));
33     /* read file data to read file */
34     fread(rd_buffer, sizeof(char), sizeof(buffer), pFile);
35     cout << rd_buffer << endl;
36     /* close file */
37     fclose(pFile);
38
39     system("pause");
40     return 0;
41 }

在開始進行讀寫之前有一段註解,裡頭主要標示在fopen開檔之後必須填入的參數代表啥意思

    /*
        r : open for reading
        rb : open for reading in binary mode
        w : open for writing
        wb : open for writing in binary mode
        r+ : support read and write. the file must exit.
        w+ : it like r+ funciton that will recover the file with same file name if file name exit.
    */

w/r 就很簡易的只是 : 只能讀 / 只能寫,wb/rb 多個b表示2進制的檔案操作

r+/w+ 多+ : 在操作上就是能讀能寫但是 r+ 有囑意是這個檔案必須存在

在讀檔案的時,有時需求是直接讀一行,利用feof函式去判斷是否讀到最後一行

while (!feof(pFile))
{
    fgets(data, 500, pFile);
    cout << data;
}

以下是fsteram 檔案基本操作,之後有遇到比較困難的應用在來上頭記錄

 1 #include <stdio.h>
 2 #include <stdlib.h>
 3 #include <string.h>
 4 #include <iostream>
 5 #include <fstream>
 6
 7 using namespace std;
 8
 9 int main()
10 {
11     fstream file;
12
13     /* write file operation */
14     file.open("temp.txt", ios::out);
15     file << "write data to file" << endl;
16     file << "fstream write file to test" << endl;
17     file << "fstream line 1 test" << endl;
18     file << "fstream line 2 test" << endl;
19     file << "fstream line 3 test" << endl;
20     file << "fstream line 4 test" << endl;
21     file << "fstream line 5 test" << endl;
22     file << "fstream line 6 test" << endl;
23     file << "fstream line 7 test" << endl;
24     file << "fstream line 8 test" << endl;
25     file.close();
26
27     /* read file operation */
28     file.open("temp.txt", ios::in);
29     while (!file.eof()){
30         char buf[200];
31         file.getline(buf, 200);
32         cout << buf << endl;
33     }
34     file.close();
35
36     system("pause");
37     return 0;
38 }

原文地址:https://www.cnblogs.com/ollie-lin/p/10274553.html

时间: 2024-08-13 20:42:36

(C/C++) FILE 讀寫檔案操作的相关文章

使用 NIO.2 操作檔案系統

Java 一直到 JDK 1.3 為止,都是使用 java.io 下的類別進行 I/O 的處理,對這有興趣的鄉民,可以參考「Java I/O」,那是我 13 年前整理的 ... XD.JDK 1.4 之後提供了 NIO,到了 JDK 1.7 又加上些新的功能,稱為 NIO.2,這些類別都被放在 java.nio 下,一般來說,使用 java.nio 類別操作檔案系統,會比使用 java.io 效率來的高且方便. 在進入主題前,各位不妨先看一下我之前整理的「Working with the Pat

C++ 檔案、資料夾、路徑處理函式庫:boost::filesystem

原帖:https://tokyo.zxproxy.com/browse.php?u=uG7kXsFlW1ZmaxKEvCzu8HrCJ0bXIAddA1s5dtIUZ%2FYzM1u9JI7jjKLTXvXJlIqeavUo1Ak%3D&b=6 如果要在 C++ 裡對特定的檔案做存取,其實透過 STL 的 fstream(參考)來做,一般是不會有什麼問題的:相對的,問題比較大的部分,可能會是在於對於資料夾(folder.directory)的處理,以及對於路徑的操作上.像是以路徑來說,Windo

C# 語法---文件讀寫操作

文件讀寫操作 System.IO命名空間有著不同的類,用於執行各種文件操作 1.File  類 提供用於創建.複製.刪除.移動和打開單一文件的靜態方法.Flie的一些方法可以返回FileStream和StreamWriter對象 常用方法: Open(String path,FileMode mode)  以讀/寫 訪問權限打開指定路徑上的FileStream   參數 path 要打開的文件   mode 用於指定文件不存在時是否創建該文件,并確定保留還是覆蓋 Create(String) 

[ASP.NET] 如何利用javascript分割檔案上傳至後端合併

最近研究了一下如何利用javascript進行檔案分割上傳並且透過後端.特地記錄一下相關的用法 先寫限制跟本篇的一些陷阱 1.就是瀏覽器的支援了 因為本篇有用到blob跟webworker 在ie中需要最少10版以上才有支援以下的方法喔! 2.因為我這是簡單的測試,所以我是將檔案存放在Session當中,實際要使用的話.應該會是將檔案分割存放在檔案系統中 廢話就不多說,我們先來看js端的程式碼 self.onmessage = function (e) { ////web worker star

推薦一款超讚的格式化SD救援檔案的方法

SD卡的易用性及攜帶方便使得SD卡得到了廣泛的使用.但是生活中的各種狀況導致SD卡格式化或SD卡內資料意外丟失,這種情況很讓人煩惱.你知道SD卡格式化救回和SD 救援的方法嗎?本文專門介紹了SD卡救回檔案的原理,並針對格式化救回SD卡資料的情況介紹了值得推薦的檔案恢復方法.即使SD卡格式化,Bitwar Data Recovery仍能幫您將丟失的資料救回. SD卡資料救回原理 雖然SD卡資料出現丟失的情況,但實際上資料並非永久地從SD卡中被銷毀,而是將本來資料儲存資料的位置標記成可寫入的狀態,因

在 React Native 中使用 moment.js 無法載入語系檔案

moment.js 是很常見的日期時間 library,友善的 API 與極佳的執行效率是它的兩大賣點.例如 (new Date()).getFullYear(),如果使用 moment.js 我可以只寫 moment().get('year'),可讀性增強許多. 問題 React Native 0.29.x 預設使用 ES6,並支援 import 語法.問題出在如果遵照官方網站的說明去載入語系檔,會發生找不到模組 (cannot find module) 的錯誤.推測可能是 moment.js

[Batch檔案筆記] 在UNC路徑中執行Batch檔

為了讓其他人可以免安裝又可以執行python程式所以我把python portable版本 winpython 放在samba的空間共享但是使用者如果要開 winpython cammand prompt .exe 打指令執行程式的話又太麻煩 所以寫了batch檔來直接執行我的python程式 因為是共享空間 所以使用 pushd%~dp0 是當前路徑接下來就是 python 再加上要執行檔案的路徑就可以了~ pushd %~dp0\python-2.7.10 python Project_Ev

sort、join 處理 csv 檔案

雖然理想上,使用者要的資料最好都是由系統產生報表,使用者直接瀏覽或下載,但是,使用者常臨時要一些業績或管理性報表,IT 人員也只能從資料庫中下 sql statement 後匯出給使用者,有時,IT 人員更可能拿到別家公司匯出的數個 csv 檔,使用者卻希望將它們合併成一個檔案,當然,一般情況 IT 人員應該會找到一台資料庫,把檔案匯入處理後,再匯出給使用者,不過,IT 人員的環境裡並不總是有資料庫可以使用 (可能是控管嚴格沒有權限) ,這時候可以使用 Unix 中的一些指令來處理,Unix 通

使用 Watch Service API 觀察檔案系統

在 Java 7 以前,如果要觀察一個目錄下的檔案是否有異動 (新增.修改.刪除),唯一的辦法就是開啟一個 thread,每隔一段時間去檢查一下,當發現有異動,發出異動的訊息.Java 7 提供了 Watch Service API 解決了這個問題,現在不需要再這麼麻煩且浪費系統資源了,透過這組 API 程式可以很優雅.簡單的監控檔案系統的異動狀況. 如下的程式,會監控 D:\temp 這個目錄,如果這個目錄有任何檔案新增.修改.刪除,就會產生 event. 1 package idv.stev