[問題] 開檔案時檔名的格式

看板C_and_CPP (C/C++)作者 (璋~)時間16年前 (2009/05/22 20:37), 編輯推噓2(205)
留言7則, 4人參與, 最新討論串1/1
我的程式是可以看使用者來開檔案,可是在開的時候會開到錯誤的東西 不知道是什麼問題? =====可以跑的實驗碼===== int a = 60; char* i; i = new char[5]; i[0]=a+5; //a+5 = 65 -> 'A' i[1]='.'; i[4] = i[2]='t'; i[3]='x'; ifstream input(i); //open "A.txt" =====可以跑的實驗碼===== ifstream input("AE.rururu"); =====要用可是會有錯誤的碼===== char* filename; //name of the open file filename = new char[9]; //Open file of who, initializing filename[0] = who+65; filename[1] = 'E'; filename[2] = '.'; filename[8] = filename[6] = filename[4] = 'u'; filename[7] = filename[5] = filename[3] = 'r'; ifstream input(filename); 我有叫filename顯示出來,filename的內容的確是 AE.rururu 可是我這個檔案的開頭是一個數字。 如果用碼1跟碼2都可以開出那個數字。 用碼3會開出一個超大的數字,就是那種,沒有initialized的變數裡面的垃圾那種。 不知道是什麼問題?還是跟其他部分的碼有關? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.244.117

05/22 20:40, , 1F
字串要用\0結尾 你少一個byte
05/22 20:40, 1F

05/22 20:42, , 2F
那這樣為什麼碼1跑得動啊@@?
05/22 20:42, 2F

05/22 20:42, , 3F
這樣的需求 我會覺得用 sprintf 或 stringstream 較安全
05/22 20:42, 3F

05/22 22:27, , 4F
碼1跑得動可能就只是剛好運氣好沒配給你用的i[5]是'\0'
05/22 22:27, 4F

05/22 22:28, , 5F
程式可以跑不見得沒有問題, 尤其這種記憶體誤用的case
05/22 22:28, 5F

05/22 22:28, , 6F
有些時候好像沒事, 有些時候就會爛在很詭異的地方Orz
05/22 22:28, 6F

05/23 17:07, , 7F
嗯嗯我加了\0之後就OK了 謝謝大家
05/23 17:07, 7F
文章代碼(AID): #1A5fnj-6 (C_and_CPP)
文章代碼(AID): #1A5fnj-6 (C_and_CPP)