[問題] 存不同檔名,避免檔案被覆蓋

看板C_and_CPP (C/C++)作者 (Terry)時間14年前 (2011/11/10 23:25), 編輯推噓0(0026)
留言26則, 5人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 問題(Question): 各位好,爬文後,發現版上有類似的文章,我參考之後,改成這樣子 http://pastie.org/2842093 因為我原本就是用freopen寫的,所以不太想去改他.. 但是改成這個樣子之後,卻只有第一個檔案裡面有內容 其它的檔案裡面都是空白的 甚至有時後compiler還會出現,控制碼錯誤 請教一下,我該如何解決呢? 還是說freopen不適合這樣子做? 謝謝幫忙 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.34.100.113

11/10 23:52, , 1F
你肯定是誤會什麼了,且重點是你一定要去改它,參考 ..
11/10 23:52, 1F

11/10 23:52, , 2F
don't close the standard stream...
11/10 23:52, 2F

11/10 23:52, , 3F

11/10 23:54, , 4F
freopen is to redirect the stream not create new one
11/10 23:54, 4F

11/10 23:56, , 5F
誤會大了,謝謝各位幫忙
11/10 23:56, 5F
不好意思另外請教一下,code裡面是說一次全部開啟 那如果一次開很多的話,會很吃記憶體嗎? 謝謝您 ※ 編輯: bernachom 來自: 114.34.100.113 (11/11 00:02)

11/11 00:03, , 6F
你是打算開多大?目前最多大概同時可以開 1000~2000
11/11 00:03, 6F

11/11 00:03, , 7F
個檔案左右,上限值和compiler有關,然後一個 FILE
11/11 00:03, 7F

11/11 00:04, , 8F
佔 32 bytes,全開的話最糟也才 64 MB .
11/11 00:04, 8F

11/11 00:05, , 9F
更正,最糟只能開到 64KB,要再多開的話就要用其它方法。
11/11 00:05, 9F
抱歉沒說清楚,不是開檔案多少的問題,而是我是把一些模擬的結果寫在TXT裡面 ,是擔心開太多,原本模擬的結果所占用的記憶體沒清掉,然後又開新的模疑來執行 ,怕會記憶體不夠?!不知道這樣子擔心是不是正確的...謝謝您 ※ 編輯: bernachom 來自: 114.34.100.113 (11/11 00:08)

11/11 00:11, , 10F
你該算的是,在你程式裡面,所有變數(陣列、一般變數、
11/11 00:11, 10F

11/11 00:11, , 11F
結構體等)加總的資料型態大小有多大,那才是佔記憶體,
11/11 00:11, 11F

11/11 00:12, , 12F
其他都寫到硬碟的,除了作業系統會有 2MB 左右flash緩衝
11/11 00:12, 12F

11/11 00:12, , 13F
其他的東西都躺在硬碟裡面,不佔記憶體空間。
11/11 00:12, 13F

11/11 00:13, , 14F
搞清楚了,謝謝您^_^
11/11 00:13, 14F

11/11 18:11, , 15F
你該擔心的是頻繁的io開啟
11/11 18:11, 15F
不好意思,請教一下 我查了很久,fprintf( )的用法,我發現,他好像只有你程式想要輸出到檔案的地方 有加上fprintf( )才會出現在TXT裡。 但是我一開始用的freopen() 他只要在一開始加上這個freopen(), 就可以把之後所有遇到的COUT都輸出到TXT裡面了。 我比較想要得到的是後面freopen()的做法..比較方便@@.. 我有試著把全部的TXT都先設定好然後一次打開,寫完後再全部關掉 但是結果就是,他只會寫到最後一個txt檔。 這是我照著t大的code改寫成我的要東西: http://codepad.org/7V7gCKGU 希望能幫忙教導下,是否哪裡有問題。 ※ 編輯: bernachom 來自: 114.34.100.113 (11/11 19:32)

11/11 19:48, , 16F
http://codepad.org/ORyV97LH 這樣就可以達到你的需求了
11/11 19:48, 16F

11/11 19:50, , 17F
你的第一個迴圈跑完後,filename就固定是simulate2.txt
11/11 19:50, 17F

11/11 19:50, , 18F
所以第二個迴圈寫了三次的,通通都寫到simulate2.txt了
11/11 19:50, 18F

11/11 19:52, , 19F
謝謝j大幫忙指導~^_^
11/11 19:52, 19F

11/12 01:53, , 20F
我的推被無視了....Orz
11/12 01:53, 20F

11/12 08:18, , 21F
誰叫你用英文
11/12 08:18, 21F

11/12 13:01, , 22F
我有注意,f大補刀應是想提醒james不能close std i/o
11/12 13:01, 22F

11/13 14:24, , 23F
那個close是原po寫的
11/13 14:24, 23F

11/13 14:49, , 24F
其實原PO不要去關掉 std i/o 就可以跑出他預期的結果了...
11/13 14:49, 24F

11/13 14:51, , 25F
因為標準IO本來就不應該被關掉...
11/13 14:51, 25F

11/13 15:03, , 26F
以原code只要把fclose給拿掉就好了....
11/13 15:03, 26F
文章代碼(AID): #1Ek-q3FG (C_and_CPP)
文章代碼(AID): #1Ek-q3FG (C_and_CPP)