要利用c++寫一個複製檔案的程式
1.以二進位檔案格式來copy檔案
ex. copy A.txt--> B.txt
2.把複製完的檔案顯示在螢幕上 ☆整個程式就是將程式裡所要顯示的資料,執行完成後必須以二進位檔案格式方式存成A.txt,之後再copy A.txt到一個B.txt的檔案裡,即新建B.txt檔!
最後在開啟B.txt時能在螢幕上看到之前所copy的資料內容。 ps.二進位格式,亦即ASCll ex: A=65 ; a=97 ; (=40.....以此類推 這個是類似的寫法```
#include
#include int main(int argc,char *argv[])
{
ifstream fin(argv[1]);
// 開啟argv[1]為輸入檔 ofstream fout(argv[2],ios::out|ios::app|ios::binary);
// 開啟argv[2],並指定其為二進位輸出檔,以append方式寫入資料 if(!fin){ // 檢查輸入檔fin是否成功開啟
cout << "輸入檔案[" << argv[1] << "]無法開啟" << endl;
return 1;
}
if(!fout){ // 檢查輸出檔fout是否成功開啟
cout << "輸出檔案[" << argv[2] << "]無法開啟" << endl;
return 1;
} struct Student{ // 定義一個結構資料型態Student
char id[6];
char name[9];
int score[5];
float average;
}; // 宣告一個型態為Student 的陣列變數Cpp,它可以用來儲存
// 30位同學的C 成績
Student Cpp[30]; int i = -1;
int sum = 0;
while(!fin.eof()){ // 檢查輸入檔fin是否還有資料
i ;
fin >> Cpp[i].id;
if (Cpp[i].id[0] == '\0'){
break;
}
fin >> Cpp[i].name;
sum = 0; // 讀取每一位同學成績計算平均
for(int j = 0; j < 5; j ){
fin >> Cpp[i].score[j];
sum = Cpp[i].score[j];
}
Cpp[i].average = sum / 5.0; // 以二進位方式寫入一筆記錄到 fout
fout.write(reinterpret_cast(&Cpp[i]),sizeof(Cpp[i]));
}
fin.close(); // 關閉 fin,即argv[1]
fout.close(); // 關閉 fout,即argv[2]
ifstream fin2(argv[2],ios::in|ios::binary);
// 重新開啟argv[2],並指定其為二進位輸入檔 if(!fin2){ // 檢查輸入檔fin2是否成功開啟
cout << "輸入檔案[" << argv[2] << "]無法開啟" << endl;
return 1;
} i = -1;
while(!fin2.eof()){ // 檢查輸入檔fin2是否還有資料
i ;
fin2.read(reinterpret_cast(&Cpp[i]),sizeof(Cpp[i]));
// 從fin2 讀入一筆記錄
if(Cpp[i].id[0] == '\0')
break; // 印出學生資料
cout << Cpp[i].id << " ";
cout << Cpp[i].name << " ";
for(int j = 0; j < 5; j ){
cout << Cpp[i].score[j] << " ";
}
cout << Cpp[i].average << endl;
}
return 0;
}