Re: [問題] DevC++期末求助

看板C_and_CPP作者 (菜菜鳥)時間10年前 (2014/06/12 23:11), 10年前編輯推噓-1(345)
留言12則, 9人參與, 最新討論串2/3 (看更多)
※ 引述《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 王曉明 男 smallming@gmail.com 無全順 女 nopassall@hotmail.com 張曉嵐 女 lan@as.com //output.txt 王先生 smallming@gmail.com 無小姐 nopassall@hotmil.com 張小姐 lan@as.com 則 小弟私以為 可以直接用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

06/12 23:18, , 1F
一直漏打 = =
06/12 23:18, 1F
※ 編輯: yuanyu90221 (61.230.164.20), 06/12/2014 23:23:30 ※ 編輯: yuanyu90221 (61.230.164.20), 06/12/2014 23:24:07

06/13 00:40, , 2F
你要四天後再po文
06/13 00:40, 2F

06/13 02:10, , 3F
....
06/13 02:10, 3F

06/13 03:01, , 4F
私以為你真要幫他,可以解析教他以自己能力寫一份60分的作
06/13 03:01, 4F

06/13 03:01, , 5F
業,建立信心,想高分且看他自己願意多投入多少
06/13 03:01, 5F

06/13 04:29, , 6F
幫他不要害他好嗎~
06/13 04:29, 6F

06/13 05:11, , 7F
ㄏㄏ
06/13 05:11, 7F

06/13 09:25, , 8F
送UTF-8的data 就悲劇了~
06/13 09:25, 8F

06/13 20:08, , 9F
這出題者用中文詞來當考題給初學者感覺不大妥
06/13 20:08, 9F

06/13 20:39, , 10F
不要害我沒生意做
06/13 20:39, 10F

06/13 20:51, , 11F
同意x大 還要考慮編碼的問題
06/13 20:51, 11F

06/13 21:15, , 12F
謝謝各位的指教 小弟知錯了 囧 UTF-8的確 會出問題
06/13 21:15, 12F
文章代碼(AID): #1JcSCZGg (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1JcSCZGg (C_and_CPP)