2015-12-14 44 views
0

我有一個C++算法這需要在一些用戶輸入,所以大致類似從終端發送的C++輸入在一行

./sum.out 
Enter a: 2 
Enter b: 3 
Sum is 5 

在UNIX殼。我想要做的是通過使用另一個發送幾個system("./sum.out")命令的C++文件來自動化進程,但我不知道如何使它也發送參數,即ab在我的情況。換句話說,我想讓第二個文件提供參數而不是用戶。

+0

請選擇C或C++作爲標記。不是都。根據您選擇的最適合的答案可能會有所不同。它是否必須通過'system'來完成? – kaylum

+0

不,它不是,它只是我知道這麼做的唯一方法 – EagerHEP

+3

還有一些更優雅但更復雜的方式來使用'pipe','fork','exec'和'dup'來做到這一點。 。如果你想要一些簡單的東西,可以做'system(「echo 2 3 | ./sum.out」);'。請注意,'system'內的字符串可以動態生成。通過使用諸如'snprintf'的東西來將格式化的字符串存儲到緩衝區中,然後將該緩衝區傳遞給'system'。或者更好的是(恕我直言)是拋棄C/C++測試程序方法altogther並編寫一個shell腳本來測試你的程序。 – kaylum

回答

0

我結束標準輸入使用格式化的字符串:

char buffer[100]; 
snprintf(buffer,100,"echo %d %d | ./sum.out",2,3); 
system(buffer); 
0

使用IO redirection

$ ./sum.out < in.txt 

其中in.txt是一個文本文件,其中包含輸入:

$ cat in.txt 
2 
3 

從程序a.out stdout重定向到的sum.out

`$ ./input.out | ./sum.out` 
+0

我無法真正使用它,因爲每次運行代碼時,我的a和b都會有所不同。 – EagerHEP