C 檔案處理

2021-04-02 23:43:11 字數 3900 閱讀 1708

c++把檔案視為無結構的位元組流,所以記錄等說法在c++檔案中是不存在的。

1.建立順序訪問檔案

#include

#include

#include

using namespace std;

int main()

cout << "enter the account, name, and balance,/n"

<< "enter end-of-fail to end input./n?";

int account;

char name[ 30 ];

double balance;

while ( cin >> account >> name >> balance )

system("pause");

檔案中新增資料)。資料可以寫入檔案的任務地方

ios::in                      開啟檔案以便輸入

ios::out                     開啟檔案以便輸出

ios::trunc                   刪除檔案中現有內容(這也是ios::out的預設操作)

ios::binary                  開啟檔案以進行二進位制(也就是非文字)格式輸入或輸出

常見程式設計錯誤:開啟乙個使用者想保留資料的現有檔案進行輸出(以ios::out方式)。這種操作會在不給出任

何警告訊息的情況下刪除檔案內容。

常見程式設計錯誤:用錯誤的ofstream物件指定檔案。

可以生成obtream物件但不開啟特定檔案,可以在後期關聯檔案與物件。例如宣告

ofstream outclientfiel;

生成ofstream物件ourclientfile。ofstream成員函式open

outclientfile.open("clients.txt",ios::out);

開啟檔案並將其與現有ofstream物件關聯。

常見程式設計錯誤:在引用檔案之前忘記開啟檔案。

占用的資源。這種方法還可以使程式更清晰。

2.讀取順序訪問檔案中的資料

#include

#include

#include

#include

using namespace std;

void outputline( int, const char * const, double );

int main()

int account;

char name[ 30 ];

double balance;

cout << setiosflags( ios::left ) << setw( 10 ) << "account"

<< setw( 13 ) << "name" << "balance/n"

<< setiosflags( ios::fixed | ios::showpoint );

while ( inclientfile >> account >> name >> balance )

outputline( account, name, balance );

system("pause");

return 0;

}void outputline( int acct, const char * const name, double bal )

良好程式設計習慣:如果檔案內容不能修改,檔案就只能開啟用於輸入(用ios::in)。這可以避免不慎改動文

件內容。這是最低訪問許可權原則的另乙個例子。

每個istream物件有乙個get指標,表示檔案中下乙個輸入相同的位元組數,每個ostream物件有乙個put指標,表示檔案中下乙個輸出相同的位元組數。語句

inclientfile.sekg(0);

將檔案位置指標移到檔案開頭(位置0),連線inclientfile。seekg的引數通常為long型別的整數。

clntdata.h標頭檔案:

#ifndef clntdata_h

#define clntdata_h

struct clientdata

;#endif

temple.cpp工程檔案

#include

#include

#include

#include

#include "clntdata.h"

using namespace std;

int enterchoice();

void textfile( fstream & );

void updaterecord( fstream & );

void newrecord( fstream& );

void deleterecord( fstream& );

void outputline( ostream&, const clientdata & );

int getaccount( const char * const );

enum choices;

int main()

int choice;

while ( ( choice = enterchoice() ) != end )

inoutcredit.close();

}system("pause");

return 0;

}int enterchoice()

void textfile( fstream &readformfile )

outprintfile << setiosflags( ios::left ) << setw( 10 )

<< "account" << setw( 16 ) << "last name" << setw( 11 )

<< "first name" << resetiosflags ( ios::left )

<< setw( 10 ) << "balance" << endl;

readformfile.seekg( 0 );

clientdata client;

readformfile.read( reinterpret_cast< char * >( &client ), sizeof( clientdata ) );

while ( !readformfile.eof() )

}void updaterecord( fstream &updatefile )

else

}void newrecord( fstream &insertinfile )

else

cerr << "account # " << account

<< "already contains information." << endl;

}void deleterecord( fstream &deleteformfile )

;deleteformfile.seekp( ( account - 1 ) * sizeof( clientdata ) );

deleteformfile.write( reinterpret_cast< char *>( &blankclient),sizeof( clientdata ) );

cout << "account #" << account << "deleted." << endl;

}else

cout << "account #" << account << "is empty" << endl;

}void outputline( ostream &output, const clientdata &c )

int getaccount( const char * const prompt )

while ( account < 1 || account > 100 );

return account;

}

C 檔案處理

寫了乙個遊戲資源編輯器 中間真是挫折不少,首先是c 到c 的轉變,主要是檔案處理上的不適應,c c 程式讀寫圖形檔案相當方便 主要是win 32 api本來就是為c c 提供的 c 讀寫起來就有點不太順,我總是想用win32 api中的結構體去讀取,那樣各類資料就自動填充好了,不過c 的塊讀取只能填...

C 檔案處理

c 把檔案視為無結構的位元組流,所以記錄等說法在c 檔案中是不存在的。1.建立順序訪問檔案 include include include using namespace std int main cout enter the account,name,and balance,n enter end...

C 檔案處理

這幾天在研究c 檔案處理方面的東西。綜述 c file i o 主要用到以下幾個類 1.ifstream 檔案讀 reading only 2.ofstream 檔案寫 writing only 3.fstream 讀寫均可。宣告以上類的變數即可對檔案操作。將乙個檔案與以上乙個類變數關聯即可。注意包...