全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1678
推到 Plurk!
推到 Facebook!

請教大大一個問題`````有關檔案複製

尚未結案
irene741001
一般會員


發表:3
回覆:0
積分:0
註冊:2004-06-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-06-05 19:55:16 IP:218.167.xxx.xxx 未訂閱
要利用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; }
hao_chih
一般會員


發表:15
回覆:25
積分:18
註冊:2003-09-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-06-07 17:36:19 IP:61.63.xxx.xxx 未訂閱
抱歉看不大懂問題的意思..你的意思是要用"標準的c "來寫嗎?(要跨平台?) 如果是的話,taishyang版主的答案已經都解的差不多了,該有的都有了 如果是在M$平台,可以用CopyFile()來複製檔案,非常簡單易用 讀寫文字檔,可以利用TStringList,用起來很方便 站上資料非常的多哦~請多利用搜尋
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-06-07 17:51:32 IP:140.135.xxx.xxx 未訂閱
引言: 抱歉看不大懂問題的意思..你的意思是要用"標準的c "來寫嗎?(要跨平台?) 如果是的話,taishyang版主的答案已經都解的差不多了,該有的都有
我只是幫irene741001的程式做排版的動作< >< >
系統時間:2024-06-27 0:41:04
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!