Re: [問題] 請問如何讓C自動執行30次,並將結果輸ꔠ…

看板C_and_CPP作者 (鬼翼&娃娃魚)時間15年前 (2010/05/05 00:35), 編輯推噓1(1021)
留言22則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《edoichi (都營大江戶線)》之銘言: 老實說我覺得你好像弄得太複雜了@_@" 就回到寫個.bat的方式來處理你的問題吧.... 首先, 把你原來的程式在fopen寫結果的地方.... 從 fopen("output.csv", "w"); 改成 fopen("output.csv", "a"); 並且確保第一次跑的時候, output.csv 不存在.... (雖然這一點可以在.bat檔裡直接處理完成) 然後, 假設你build出來的執行檔叫 MyProg.exe 開啟記事本, 內容如下==括起來的部份(不含==) == rem Delete the old result. del output.csv rem Start to run 30 times. MyProg.exe MyProg.exe MyProg.exe MyProg.exe MyProg.exe rem Finish! PAUSE == 我懶只打了5次, 請自行把其中的 MyProg.exe 打成30次.... 然後記事本另存新檔叫 run30.bat 與 MyProg.exe 放在一起.... (請注意另存新檔時下面的存檔類型, 不要存了個 run30.bat.txt 出來) 然後, 如果你會用 命令提示字元/console 模式, 就用.... 不然, 用檔案總管找到 run30.bat 點兩下去執行也可以.... //////// 如果你想用C寫, 另外寫一個叫 run30.c 的程式.... == #include <stdlib.h> int main(void) { system("del output.csv"); for(int i=0; i<30; ++i) { system("MyProg.exe"); } system("PAUSE"); return 0; } == 假定它build出來成為 run30.exe , 一樣和 MyProg.exe 放一起.... 然後去執行 run30.exe , 也可以達到和.bat那個差不多的功能.... //////// 如果你會用命令提示字元模式, 那只要下以下指令.... == del output.csv for /L %i in (1,1,30) do MyProg.exe == 其實這寫在 run30.bat 或是 run30.c 也可以啦, 只是我剛忘了XD //////// 補充, 以上的幾個方法, 都需要搭配 MyProg.exe 裡的 fopen() 要改用 "a" mode 來開啟 "output.csv" -- 以上....Orz -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.132.174.98 ※ 編輯: VictorTom 來自: 220.132.174.98 (05/05 00:45)

05/05 00:47, , 1F
真的是複雜化了沒錯,好神奇,奏效了說 ^^
05/05 00:47, 1F
※ 編輯: VictorTom 來自: 220.132.174.98 (05/05 00:48)

05/05 00:50, , 2F
前人的論文可能是手動跑的,csv太好用了 XDDDDD
05/05 00:50, 2F

05/05 00:50, , 3F
若是早知道這個方法,以前的人可以省超多時間的
05/05 00:50, 3F

05/05 00:50, , 4F
我改用csv是因為看起來你不是真的寫xls格式, 用.csv比較
05/05 00:50, 4F

05/05 00:51, , 5F
看的出來是純文字(雖然不是,分隔XD)而且預設一樣可以點
05/05 00:51, 5F

05/05 00:51, , 6F
兩下用excel來開啟:)
05/05 00:51, 6F

05/05 01:05, , 7F
網拍的輸出格式也是.csv檔 XD 其實剛試驗發現.xls也行
05/05 01:05, 7F

05/05 01:05, , 8F
不過csv檔比較省空間
05/05 01:05, 8F

05/05 01:59, , 9F
兩行的那個方法太強大了 ><
05/05 01:59, 9F
※ 編輯: VictorTom 來自: 220.134.41.4 (05/05 13:26)

05/05 17:41, , 10F
推簡單實用,另也想請問system與ShellExecute的差異~
05/05 17:41, 10F

05/05 17:41, , 11F
總覺得好像都是用來執行程式的, 但shell好像又不只這樣~
05/05 17:41, 11F

05/05 18:11, , 12F
概略分: system是stdlib的API, ShellExecute是Win32API
05/05 18:11, 12F

05/05 18:12, , 13F
system似乎用空白後的參數傳不到, ShellExecute可下參數
05/05 18:12, 13F

05/05 18:13, , 14F
system會block等該執行程式, ShellExecute叫起該程式就
05/05 18:13, 14F

05/05 18:13, , 15F
回你的程式繼續跑了; 看了一下人家的討論使用上的差異大
05/05 18:13, 15F

05/05 18:14, , 16F
概是這樣, 細節的話就不了解了....@_@"
05/05 18:14, 16F

05/05 18:15, , 17F
話說ShellExecute要給路徑與檔名, 不知道能不能直接使用
05/05 18:15, 17F

05/05 18:16, , 18F
Shell指令像copy, dir之類的....@_@"
05/05 18:16, 18F

05/06 08:57, , 19F
謝v大, 最後二句不太了解, 是指傳copy或dir給shellexecut
05/06 08:57, 19F

05/06 08:59, , 20F
去執行嗎, 這我等等可以試, 另外我找到用shell開IE的方法
05/06 08:59, 20F

05/06 08:59, , 21F
->ShellExecute(NULL,"open" "http://www.google.com",
05/06 08:59, 21F

05/06 09:00, , 22F
, NULL, NULL, SW_SHOWNORMAL);
05/06 09:00, 22F
文章代碼(AID): #1Bu4pJNs (C_and_CPP)
文章代碼(AID): #1Bu4pJNs (C_and_CPP)