看板 C_and_CPP 關於我們 聯絡資訊
經過我後來的修改 還是有些疑惑沒有解開 新打的程式碼: #include<iostream> #include<fstream> using namespace std; ifstream InputFile; char list[10][20]; int j=0,file_num=3; const int line=0; //list[2][] 存著file1.txt int main(){ list[line][0]='f'; list[line][1]='i'; list[line][2]='l'; list[line][3]='e'; list[line][4]='1'; list[line][5]='.'; list[line][6]='t'; list[line][7]='x'; list[line][8]='t'; list[line][9]='\0'; //如果說是\0的問題的話滿奇怪的 for(j=0;j<=file_num;j++){ // 按順序打開list[0~3]並讀入 InputFile.open(list[j],ifstream::in); //讀入 cout<<list[j]; //檢查到底list[j]裡存了啥 while(InputFile.good())cout<<(char)InputFile.get(); getchar(); } /* 執行步驟: 讀入並印出list[0] (空) 讀入並印出list[1] (空) 讀入並印出list[2] (file1.txt) 印出file1.txt 印出file1.txt的內容 讀入並印出list[3] (空) close InputFile */ InputFile.close(); } 問題: 為什麼明明list[2]讀的到東西沒錯 加上如果是\0的問題 我在結尾加上了\0 還是沒有用阿 可是卻打不開檔案? 如果真的是這樣的話 改成list[0]存放file1.txt卻可以成功? 比較奇怪的是 為什麼我把for loop改掉 改成list[line]就沒有問題了???? 就可以正常的印出 實際上這是是個測試檔案 原版的程式 必須用到for loop 希望能得到好心人的解答!!!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 58.115.79.203
loveme00835:使用類別之前, 你並沒有先了解他的特性, 像是錯誤旗標 08/14 20:47
loveme00835:被升起, 要自己手動clear這點, 就算前面有人推文你也 08/14 20:47
loveme00835:沒注意到, 在用C++寫程式, 沒有讓一個變數盡可能的區 08/14 20:48
loveme00835:域化, 我覺得他既然能帶給你方便, 至少你也要善用這點 08/14 20:49
loveme00835:這是改過的程式碼, 你要了解你問題的根源, 像是: 一個 08/14 20:50
loveme00835:迴圈週期, 完成1.開檔2.讀檔3.關檔, 既然不同週期互 08/14 20:51
loveme00835:無關聯, 根本不需要共用一個ifstream物件 08/14 20:51
loveme00835:http://paste.plurk.com/show/293960/ 08/14 20:52
j129008:謝謝!!! I love you!!! 08/15 14:16
loveme00835:= = 08/15 14:18
j129008:樓上真是好心人 08/15 14:21