如何傳遞參數給一個C程序,它需要從一個文本文件中的一些inputstreams (如scanf()的),這是已經保存,我運行的輸入。使用Runtime.getRuntime().exe() in java。傳遞參數給AC代碼與Java
回答
Runtime.exe
允許您指定要執行的程序以及程序的參數。看看Java API documentation for exec
。
String[] command = new String[2];
command[0] = "c:\\bin\\someProgram.exe";
command[1] = "c:\\data\\arguments.txt";
Runtime.getRuntime().exec(command);
如果C程序中的數據已經被存儲在一個文件中,應該將文件直接傳遞作爲參數(這取決於,當然,在該方案的確切性質和所需要的任何前處理 - 你需要給我們一個更好的答案的細節)。
這個答案對實質...有點輕...另外,它似乎OP已經儘可能地運行程序。 – millimoose 2013-05-08 11:30:00
這種問題並不多,但我想OP可能會對如何傳遞參數感到困惑 - exec的文檔並不十分清楚。 – 2013-05-08 11:32:32
的確如此,但在這種情況下,我傾向於要求澄清並掩蓋這個問題,如果沒有人願意將代碼片段扔到牆上來查看哪一個會粘住。 – millimoose 2013-05-08 11:36:46
它看起來像你想從文件傳遞數據到你的程序,而不是交互式地進行。您可以爲此使用I/O重定向。在unix哲學everything is a file
,這有助於你的輸入流stdin
也是一個文件。
讓我用一個例子來說明這一點。我會後一
int main(){
int a, b;
std::cin >> a >> b;
std::cout << a+b << std::endl;
return 0;
}
你喜歡的東西g++ sum.cpp
編譯這個並運行此類似
./a.out
3 4
這將打印7
如你所期望。但是你必須手動輸入這些數據,如果這些數據保持不變,那麼一遍又一遍地輸入這些數據是沒有意義的。這裏是I/O重定向。我們想要做的是告訴程序,而不是從stdin
中讀取,它應該從另一個文件中讀取。
爲了測試這個,創建一個簡單的文本文件input.text
並將3 4
作爲其內容。現在運行這個程序./a.out < input.txt
,如果你改變文件中的數字並再次運行程序,這將再次打印7
,你會得到相應的結果。
所以你試圖做的事情與Java或C或者scanf或者其他輸入方式無關。作爲一個附註,而不是使用Runtime
,你應該考慮使用commons exec
。 爲了更好地理解重定向,請閱讀this和this。
注意:既然你提到你想運行exe
文件,我假設你運行的是windows。您可能需要將a.out
更改爲a.exe
或您的ide編譯成的任何名稱。如果我沒有清楚地解釋某件事情,希望它能幫助我隨時告訴我。
感謝nikhil的答案,但這並不完全是我想 仍然我得到了答案使用輸入/輸出重定向 謝謝你,以及 – 2013-05-09 05:16:25
- 1. 將javascript函數的參數傳遞給java代碼
- 2. 如何使用shell腳本將參數傳遞給java代碼
- 3. 將命令行unicode參數傳遞給Java代碼
- 4. GRADLE:TestNg - 無法將-D參數傳遞給java代碼
- 5. REST傳遞參數與Java
- 6. 將參數傳遞給Java中的類
- 7. 將Jenkins中的參數傳遞給Java
- 8. 將參數傳遞給Java的Clojure
- 9. 傳遞參數給碼頭組合
- 10. 將url參數傳遞給簡碼
- 11. 將代碼從c#傳遞給c作爲函數參數
- 12. 將參數傳遞給代碼後面的函數onclick
- 13. 將代表與參數一起傳遞給一個函數
- 14. 將參數傳遞給Yum與木偶
- 15. 將參數傳遞給geom_point2與地圖
- 16. 參數傳遞給函數
- 17. 參數傳遞給函數
- 18. 傳遞JVM參數傳遞給SBT
- 19. 將參數傳遞給Web服務工作代碼
- 20. XSS預防傳遞給JS代碼文件參數
- 21. 如何將參數傳遞給NativeActivity代碼序列中的CodeActivity
- 22. 將動態參數傳遞給js代碼 - 哪個更好?
- 23. 代碼C#傳遞參數給一個變量
- 24. IronPython DLR;傳遞參數給編譯的代碼?
- 25. 無法將處理程序參數傳遞給代碼。新手
- 26. Process.Start - 將html代碼傳遞給EXE作爲參數
- 27. 將參數傳遞給代碼後面的RelayCommand
- 28. 如何將值傳遞給qsub代碼的boost選項參數
- 29. 傳遞代碼作爲參數(C++)
- 30. 傳遞代碼作爲參數
創建一個文本文件並傳遞數據不是很簡單嗎?這是一個奇怪的問題... – Fabiotocchi 2013-05-08 11:28:17
@Fabiotocchi可能是功課。 – millimoose 2013-05-08 11:29:05
你的問題不清楚。 C程序是從它自己打開的文本文件中讀取輸入,還是從'stdin'讀取輸入,並且希望Java程序將文本文件的內容傳遞給它?如果前者是在C文件中硬編碼的文本文件的名稱,還是它期望它作爲參數? – millimoose 2013-05-08 11:31:22