[問題] 在迴圈裡面重複寫出txt檔

看板C_and_CPP作者 (企鵝)時間9年前 (2014/10/29 00:40), 編輯推噓1(109)
留言10則, 3人參與, 最新討論串1/2 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) C 語言 問題(Question): 想要在迴圈裡面多次輸出不同的檔案 但是輸出的檔案名稱其中一部分會隨著變動 目前我這樣寫雖然可以輸出多個txt檔 但是不知為何名稱變成亂碼@@ 程式碼如下: char file_start[15] = "Results_time_"; //這部分名稱是固定的 char file_end[15] = ".text"; char order; //這部分名稱會隨著下面迴圈跑到哪裡而改 for(i=0;i<100;i++) { if(i%5==0) //當i除以5為整數時才輸出檔案 { order = (char)(i); string a; a.assign ( file_start + order + file_end ); Results = fopen ( a, "w+"); } } 不知道為什麼輸出結果的檔名是一堆亂碼@@... 先謝謝大家了:) } -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 126.88.207.102 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1414514452.A.4AC.html

10/29 00:42, , 1F
a.assign 這裡錯了, 你應該先 assign 第一部份
10/29 00:42, 1F

10/29 00:42, , 2F
再用 a += order; a += file_end; 黏上去
10/29 00:42, 2F

10/29 00:43, , 3F
主要原因是 file_start file_end 是 C 字串不是字串物件
10/29 00:43, 3F

10/29 00:43, , 4F
所以對它們用 + 是錯誤的作法
10/29 00:43, 4F

10/29 00:44, , 5F
而 a 則是字串物件了, 所以可以對它用 + += 等操作
10/29 00:44, 5F

10/29 00:45, , 6F
另外如果你是要黏 i 的數值的話, + i 或 + order 都不行
10/29 00:45, 6F

10/29 00:46, , 7F
這種你應該需要 stringstream 物件幫你黏字串
10/29 00:46, 7F

10/29 00:56, , 8F
先謝謝你:)我嘗試用了你說的a+=,但是他說我的a是
10/29 00:56, 8F

10/29 00:57, , 9F
undeclared identifier @@ 為什麼啊...
10/29 00:57, 9F

10/29 11:56, , 10F
編譯器認為它未宣告;你可以看看宣告的那行是否哪裡有錯
10/29 11:56, 10F
文章代碼(AID): #1KJySKIi (C_and_CPP)
文章代碼(AID): #1KJySKIi (C_and_CPP)