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

關於open file 的重要問題

尚未結案
keys
一般會員


發表:2
回覆:3
積分:1
註冊:2005-06-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-06-10 01:00:49 IP:203.67.xxx.xxx 未訂閱
這是我第一次寫的留言版程式: //message 留言板  #include  #include using namespace std; int main () { char a,y; char buffer [999]; char buffer1 [50]; char buffer2 [50]; int b=0; cout << "leave a message (L) or read a message (R) :"; cin.getline(buffer,2); if(buffer [0]=='L')//留言 { ofstream message ("message.txt",ios::app); cout << "name :"; cin.getline (buffer,999); message << buffer << " "; cout << "time :"; cin.getline (buffer,999); message << buffer << endl; cout << "message :" << endl; cin.getline (buffer,999); message << buffer << endl; } if(buffer [0]=='R')//留言數 { ifstream message ("message.txt"); while(message.getline(buffer,999))b ; cout << "total message :" << b/2 << endl; } if(b>0)//看留言 { ifstream message ("message.txt"); cout << "input message you want to read :" << endl << "name :"; cin >> buffer1; cout << "time :"; cin >> buffer2; cout << endl << endl; while(message >> buffer) { if(!strcmp(buffer,buffer1))// equal if(strcmp(buffer,buffer1)==0) { message >> buffer; if(!strcmp(buffer,buffer2))// equal if(strcmp(buffer,buffer2)==0) { message.get(); message.getline(buffer,999); cout << "message :" << endl << "--------------------------------------------------------" << endl; cout << buffer1 << " " << buffer2 << endl << endl << buffer << endl; cout << "--------------------------------------------------------" << endl; y='Y'; } } } if(!(y=='Y'))cout << "It does not exist !!"; } return 0; } 這事後來修改的,但是不能使用 WHY? //message 留言板 #include #include using namespace std; int main () { char a,y; char buffer [999]; char buffer1 [50]; char buffer2 [50]; int b=0; fstream message ; cout << "leave a message (L) or read a message (R) :"; cin.getline(buffer,2); if(buffer [0]=='L')//留言 { message.open("message.txt",ios::out|ios::trunc|ios::app); cout << "name :"; cin.getline (buffer,999); message << buffer << " "; cout << "time :"; cin.getline (buffer,999); message << buffer << endl; cout << "message :" << endl; cin.getline (buffer,999); message << buffer << endl; message.close(); } if(buffer [0]=='R')//留言數 { message.open("message.txt",ios::in); while(message.getline(buffer,999))b ; cout << "total message :" << b/2 << endl; message.close(); } if(b>0)//看留言 { message.open("message.txt"); cout << "input message you want to read :" << endl << "name :"; cin >> buffer1; cout << "time :"; cin >> buffer2; cout << endl << endl; while(message >> buffer) { if(!strcmp(buffer,buffer1))// equal if(strcmp(buffer,buffer1)==0) { message >> buffer; if(!strcmp(buffer,buffer2))// equal if(strcmp(buffer,buffer2)==0) { message.get(); message.getline(buffer,999); cout << "message :" << endl << "--------------------------------------------------------" << endl; cout << buffer1 << " " << buffer2 << endl << endl << buffer << endl; cout << "--------------------------------------------------------" << endl; y='Y'; } } } if(!(y=='Y'))cout << "It does not exist !!"; message.close(); } return 0; } 拜託了 >"< 想了很久都沒結果
cashyy
高階會員


發表:117
回覆:322
積分:212
註冊:2004-04-30

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-10 02:18:37 IP:59.105.xxx.xxx 未訂閱
您好!可否用文字簡單說明問題?
keys
一般會員


發表:2
回覆:3
積分:1
註冊:2005-06-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-10 06:39:14 IP:203.67.xxx.xxx 未訂閱
引言: 您好!可否用文字簡單說明問題?
謝謝你的建議歐 ^_^ 第一次在這PO文 不太懂規局
taishyang
站務副站長


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-06-10 09:15:28 IP:210.68.xxx.xxx 未訂閱
您好:    PO程式碼的方式請參考版規說明,煩請修改謝謝您的配合 >
justdo
高階會員


發表:2
回覆:359
積分:222
註冊:2004-08-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-06-12 20:47:17 IP:221.169.xxx.xxx 未訂閱
試了一下,用 ios::out|ios::app|ios::trunc 無法正常開啟檔案 用 ios::out 或 ios::app 就行了,視你的需求而定。
keys
一般會員


發表:2
回覆:3
積分:1
註冊:2005-06-10

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-06-13 08:09:24 IP:59.105.xxx.xxx 未訂閱
引言: 試了一下,用 ios::out|ios::app|ios::trunc 無法正常開啟檔案 用 ios::out 或 ios::app 就行了,視你的需求而定。
謝謝你摟 問一下歐 我在讀留言為了讓指標再次只到檔頭 開了兩次檔但是我不想用這方法 我想用seekg(ios::beg)怎麼改呢 大大交一下唄T_T
GeorgeKu
中階會員


發表:1
回覆:120
積分:74
註冊:2004-10-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-06-13 12:11:25 IP:61.228.xxx.xxx 未訂閱
如果檔案旗標已經被設定EOF,你必須把旗標設定為ios::goodbit,才可以使用seekg(ios::beg). 舉例如下:
string str;
fstream file("test.txt",ios::in);
while(file>>str){}; // 檔案讀到最末端
file.clear(); //清除io stream的旗標
seekg(ios::beg); //檔案指標指向檔頭
系統時間:2024-06-01 22:59:14
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!