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

作者: yuanyu90221 (菜菜鳥)   2014-06-12 23:11:27
※ 引述《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
作者: yuanyu90221 (菜菜鳥)   2014-06-12 23:18:00
一直漏打 = =
作者: diabloevagto (wi)   2014-06-13 00:40:00
你要四天後再po文
作者: CaptainH (Cannon)   2014-06-13 02:10:00
....
作者: getaway (夏天快走!!!)   2014-06-13 03:01:00
私以為你真要幫他,可以解析教他以自己能力寫一份60分的作業,建立信心,想高分且看他自己願意多投入多少
作者: damody (天亮damody)   2014-06-13 04:29:00
幫他不要害他好嗎~
作者: longlongint (華哥爾)   2014-06-13 05:11:00
ㄏㄏ
作者: firejox (Tangent)   2014-06-13 09:25:00
送UTF-8的data 就悲劇了~
作者: xvid (DivX)   2014-06-13 20:08:00
這出題者用中文詞來當考題給初學者感覺不大妥
作者: bachelorwhc (單身老王)   2014-06-13 20:39:00
不要害我沒生意做
作者: firejox (Tangent)   2014-06-13 20:51:00
同意x大 還要考慮編碼的問題
作者: yuanyu90221 (菜菜鳥)   2014-06-13 21:15:00
謝謝各位的指教 小弟知錯了 囧 UTF-8的確 會出問題

Links booklink

Contact Us: admin [ a t ] ucptt.com