C 對資料檔案的操作

2021-08-02 03:02:09 字數 3967 閱讀 6635

1.檔案一般指儲存在外部介質上資料的集合

2.作業系統是以檔案為單位對資料進行管理的

3.根據檔案中資料的組織形式,可分為ascii檔案和二進位制檔案

c++中輸入輸出常量是在ios類中定義的,他們是列舉常量,有多種選擇

方式作用

ios::in

以輸入的方式開啟檔案

ios::out

以輸出的方式開啟檔案(這是預設方式),如果已有此名字的檔案,則將其原有的內容全部清除

以輸出的方式開啟檔案,寫入的資料新增在檔案末尾

ios:ate

開啟乙個已有的檔案,檔案指標指向檔案末尾

ios::trunc

ios::binary

以二進位制開啟乙個檔案,如果不指定此方式則預設為ascii方式

ios::nocreate

開啟乙個已有的檔案,如果檔案不存在,則開啟失敗

ios::noreplace

如果檔案不存在則建立新檔案,如果檔案存在則操作失敗

ios::in|ios::out

已輸入和輸出的方式開啟乙個檔案,檔案可讀可寫

ios::out|ios::binary

以二進位制方式開啟乙個輸出檔案

ios::in|ios::binary

以二進位制方式開啟乙個輸入檔案

下面是**,把10個數字以ascii寫入乙個檔案

#include

#include//從iostream派生而來,用來支援對磁碟檔案的輸入輸出

using

namespace

std;

int main()

int i,a[10];

for(i=0;i<10;i++)

outfile.close();

return

0;}

輸入10個數字

建立了乙個檔案

裡面寫入了數字

讀檔案

#include

#include//從iostream派生而來,用來支援對磁碟檔案的輸入輸出

二進位制檔案除了可以作為輸入檔案外也可以作為輸出檔案。

對二進位制檔案的操作主要是通過istream類的成員函式read和write來實現

原型為

istream&read(char*buffer,int len);

ostream&write(const char*buffer,intlen);

a.write(p1.50);

b.read(p2,30);

a是輸出檔案流物件,從p1指向的單元開始的50個位元組的內容不加轉換的寫到與a關聯的磁碟中。

b是輸入檔案流物件。從b所關聯的磁碟檔案中讀取30個位元組(或遇到eof結束),存放到p2裡。

#include

#include//從iostream派生而來,用來支援對磁碟檔案的輸入輸出

using

namespace

std;

struct student

;int main()

;ofstream outfile("stu.bin",ios::binary);

if(!outfile)

int i;

for(i=0;i<2;i++)

outfile.close();

/***************************/

student stu2[2];

ifstream infile("stu.bin",ios::binary);

if(!infile)

for(i=0;i<2;i++)

for(i=0;i<2;i++)

在磁碟檔案中有乙個檔案讀寫位置標記,檔案每讀取或者寫入乙個位元組,位置標記就向後移動乙個位元組。對於二進位制檔案,允許對位置標記進行控制,使他按照使用者的意圖進行移動。

成員函式

作用gcount()

得到最後一次輸入所讀取的位元組數

tellg()

得到輸入檔案位置標記的當前位置

tellp()

得到輸出檔案位置標記的當前位置

seekg(檔案中的位置)

將輸入檔案位置標記移動到指定的位置

seekg(位移量,參考位置)

以參考位置為基礎移動若干位元組

seekp(檔案中的位置)

將輸c出檔案位置標記移動到指定的位置

seekp(位移量,參考位置)

以參考位置為基礎移動若干位元組

結尾是p表示 put 指輸出檔案

結尾時g表示 get 指輸入檔案

參考位置

意義ios::beg

檔案開頭(begin),預設值。

ios::cur

位置標記當前的位置(current)

ios::end

檔案末尾

下面實現對三個學生資訊

1.寫入磁碟檔案

2.讀出第二個學生的資訊

3.修改第三個學生的資訊

4.顯示所有學生的資訊

#include#include//從iostream派生而來,用來支援對磁碟檔案的輸入輸出

#include//strcpy要用

using namespace std;

#define n 3

struct student

;int main()

;fstream iofile("stu.dat",ios::in|ios::out|ios::binary);

if(!iofile)

/******************寫入磁碟******************/

int i;

for(i=0;ichar*)&stu[i],sizeof(stu[i]));

}/**************讀第二個學生的資訊*************/

student stu2;

iofile.seekg(2*sizeof(stu[0]),ios::beg);//移動位置

iofile.read((char*)&stu2,sizeof(stu2));//讀取

cout**************修改第三個學生的資訊*************/

strcpy(stu[2].name,"caixianyu");

stu[2].age=21;

iofile.seekp(2*sizeof(stu[0]),ios::beg);//移動位置

iofile.write((char*)&stu[2],sizeof(stu[2]));//寫入

/********************列印所有資訊********************/

iofile.seekg(ios::beg);//移動位置

student stu_out;

for(i=0;i<3;i++)

SQL針對資料檔案的增刪改

建立資料庫 create database database name onprimary name database name filename database address file name.mdf size maxsize filegrowth 注 關於primary的解釋 這個括號內的...

開啟檔案,寫入資料(檔案操作)

檔案的操作 開啟再關閉 include includeusing namespace std void main double x,y ifstream infile ofstream outfile infile.open c users good desktop 我的旅途 專案五十四 檔案操作 ...

C 對資料的常用操作

在做專案的時候,少不了對資料的新增,刪除,修改等操作,有時候感覺到很簡單,但是如果要考慮到很多問題的話,那麼就不是那麼簡單了,因為需要考慮到很多的問題和因素,下面是樹形結構上採用資料來源方式對資料進行操作,感覺到還可以,所以記下來,以後對自己有用。新增物料分類的方法 private void bar...