[問題] 連續讀檔

看板C_and_CPP作者 (最遙遠的旅途...)時間14年前 (2011/05/22 09:06), 編輯推噓3(3024)
留言27則, 8人參與, 最新討論串2/2 (看更多)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) 其實我為了用sprintf所以把C++和C混用了@@ 檔名是cpp就是了 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) 問題(Question): 使用sprintf的時候沒有成功寫入組合起來的字串 我需要連續的讀檔id_0.txt~id_9473.txt 還是有別的方法 餵入的資料(Input): 預期的正確結果(Expected Output): 這樣子的話應該輸出"id_0.txt id_1.txt..." 錯誤結果(Wrong Output): 可是他都印出(null) 程式碼(Code):(請善用置底文網頁, 記得排版) char *STD_INPUT_FILE_NAME; for(int list=0; list <=9473; list++){ sprintf(STD_INPUT_FILE_NAME, "id_%d.txt", list); printf("%s",STD_INPUT_FILE_NAME); system("pause"); } 補充說明(Supplement): 還是因為我c和cpp混用所以sprintf不能用 我iostream和stdio.h都有include -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.113.242.96

05/22 17:14, , 1F
"*STD_INPUT_FILE_NAME" please new or malloc ...
05/22 17:14, 1F

05/22 17:19, , 2F
什麼意思@@?這個地方不能用char麻??
05/22 17:19, 2F

05/22 17:20, , 3F
他是指標 請用new或者malloc給予空間...
05/22 17:20, 3F

05/22 17:21, , 4F
你宣告了指標, 但是沒有為它提供指向的記憶體空間
05/22 17:21, 4F

05/22 21:02, , 5F
char STD_INPUT_FILE_NAME[1024]; // 至少也要寫成這樣
05/22 21:02, 5F

05/22 21:02, , 6F
↑上面的1024你可以自行改成足夠的大小
05/22 21:02, 6F

05/22 21:37, , 7F
char STD_INPUT_FILENAME[FILENAME_MAX];
05/22 21:37, 7F

05/22 21:38, , 8F
windows下「應」有規定,路徑長不得超過259長度,故
05/22 21:38, 8F

05/22 21:38, , 9F
VC 下之 FILENAME_MAX 即 260
05/22 21:38, 9F

05/22 21:39, , 10F
另原po考慮一下要不要改 sprintf(..."id_%04d.txt"...)
05/22 21:39, 10F
我一開始用 char *STD_INPUT_FILE_NAME="id_0.txt"; 因為我下面開檔案是用 ifstream fin(STD_INPUT_FILE_NAME); 這次一開始的做法~ 所以想說去改動*STD_INPUT_FILE_NAME再丟入fin這樣子 ifstream好像是吃char@@所以這樣子丟 所以sprintf不能夠改變*char這種型態裡面的東西嘛? ※ 編輯: yflou520 來自: 140.113.242.96 (05/22 23:04)

05/22 23:07, , 11F
char *STD_INPUT_FILE_NAME="id_0.txt"; 這是唯讀的
05/22 23:07, 11F

05/22 23:08, , 12F
請見置底文十三誡第四
05/22 23:08, 12F

05/23 00:50, , 13F
慘~我搞定了~感謝@@不過我不能自刪XD
05/23 00:50, 13F

05/23 00:51, , 14F
又沒有踩到板規,何必自刪 XD
05/23 00:51, 14F

05/23 01:05, , 15F
因為之前沒有看~感覺十三誡很嚴重耶XDD
05/23 01:05, 15F

05/23 09:05, , 16F
給個建議,如果你寫c++的話,把stdio.h改成cstdio吧
05/23 09:05, 16F

05/23 09:06, , 17F
混用有潛在的問題,不過我是看書本的提醒.我很乖不去質疑
05/23 09:06, 17F

05/23 09:27, , 18F
我以前看書也這樣教,不過後來常常 copy-paste 也懶得把
05/23 09:27, 18F

05/23 09:27, , 19F
stdio.h 改成 cstdio,然後至今相安無事
05/23 09:27, 19F

05/23 16:23, , 20F
其實現在的標準裡 C++ Headers 的名稱已經不會和 C 衝突
05/23 16:23, 20F

05/23 16:23, , 21F
了所以比較沒差, 不過養成習慣一來比較一致一來在用老系
05/23 16:23, 21F

05/23 16:23, , 22F
統時才不會發生奇怪的問題...
05/23 16:23, 22F

05/23 16:44, , 23F
在 Google C++ Style Guide 裡面 http://goo.gl/TuxbD
05/23 16:44, 23F

05/23 16:45, , 24F
也建議 C Libraries 的標頭檔放在 C++ 之前,這勢必也會
05/23 16:45, 24F

05/23 16:47, , 25F
造成 stdio.h 被直接或間接 #include 進 C++ 專案內。
05/23 16:47, 25F

05/23 17:37, , 26F
我都統一放後面 ^^"
05/23 17:37, 26F

05/23 18:00, , 27F
版主不乖(誤)
05/23 18:00, 27F
文章代碼(AID): #1DsD82Cc (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1DsD82Cc (C_and_CPP)