看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《HelloTony (嗨東尼)》之銘言: : 老師要我們用DevC++打一個可以寫信的cord : 可以讀取一個test.txt檔 : 其中有4個人(2男2女)的名字和4個人的email : 要把它printf到另一個out.txt檔中 : 其中”王大明“要改成”王先生”(小姐依此類推) : 再把email也printf出來 : 然後要加入信的內容 : 大致上知道要用fgets.strcpy.strcat…… : 但是不知道如何下手QAQ : 再四天就要交了 : 但是也想搞懂啊~~ : 還有請各位幫忙了謝謝 剛剛下班看到這題 小弟不才 想說來解看看這題 請各位版大對我的解法 不吝指教 感恩 回到正題 其實原PO 這題的解法 端看 Data 端 的資料長的如何 我假設 原PO 所說的 test.txt 及 output.txt的格式如下: //test.txt 王曉明 男 [email protected] 無全順 女 [email protected] 張曉嵐 女 [email protected] //output.txt 王先生 [email protected] 無小姐 [email protected] 張小姐 [email protected] 則 小弟私以為 可以直接用fstream 一行一行處理 source code 如下: // File Name : FILEIO.cpp #include <iostream> #include <fstream> #include <string> #include <cstdlib> using namespace std; //用來讀取 Data的struct typedef struct{ string name; string gender; string email; }email_entry; // main function int main(){ email_entry input_s; string output_s; fstream filein,fileout; filein.open("D:\\test.txt",ios::in|ios::binary); fileout.open("D:\\output.txt",ios::out|ios::binary); if(filein==NULL) { cerr <<"filein 檔案開啟失敗" << endl; exit(1); } if(fileout==NULL) { cerr << "fileout 檔案開啟失敗" << endl; exit(2); } while(!filein.eof())//尚未到檔案尾端 { //variable initialized input_s.name =""; input_s.gender=""; input_s.email=""; output_s =""; // input string with filein fstream filein >> input_s.name >> input_s.gender >> input_s.email; cout <<"從檔案讀入資料: " << input_s.name << " " << input_s.gender << " " << input_s.email << endl; // reset input_s.gender if(input_s.gender.compare("男")==0)//如果是男 input_s.gender ="先生"; else //假設只有兩種性別的話 input_s.gender ="小姐"; //假設名字是中文 output_s +=input_s.name.substr(0,sizeof(wchar_t)); output_s +=input_s.gender; output_s +=input_s.email; cout <<"以輸入檔案資料 : " << output_s << endl; fileout << output_s<<endl; }// while end filein.close(); fileout.close(); }//main end 以上再假設為format data的用fstream 存取 用這個方式要注意的是EOF需在最後一筆資料的尾端 以及 fstream 的<< operator每次輸入 只到前一whitespace (0x20) 這是小弟想到的解法 如有錯誤 請各位大大不吝指教 XD -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.230.164.20 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1402585891.A.42A.html ※ 編輯: yuanyu90221 (61.230.164.20), 06/12/2014 23:16:03 ※ 編輯: yuanyu90221 (61.230.164.20), 06/12/2014 23:18:15
yuanyu90221:一直漏打 = = 06/12 23:18
※ 編輯: yuanyu90221 (61.230.164.20), 06/12/2014 23:23:30 ※ 編輯: yuanyu90221 (61.230.164.20), 06/12/2014 23:24:07
diabloevagto:你要四天後再po文 06/13 00:40
CaptainH:.... 06/13 02:10
getaway:私以為你真要幫他,可以解析教他以自己能力寫一份60分的作 06/13 03:01
getaway:業,建立信心,想高分且看他自己願意多投入多少 06/13 03:01
damody:幫他不要害他好嗎~ 06/13 04:29
longlongint:ㄏㄏ 06/13 05:11
firejox:送UTF-8的data 就悲劇了~ 06/13 09:25
xvid:這出題者用中文詞來當考題給初學者感覺不大妥 06/13 20:08
bachelorwhc:不要害我沒生意做 06/13 20:39
firejox:同意x大 還要考慮編碼的問題 06/13 20:51
yuanyu90221:謝謝各位的指教 小弟知錯了 囧 UTF-8的確 會出問題 06/13 21:15