2012-02-25 6 views
1

私はこれを使用する必要がありますI CMDに渡される引数として使用されるように、ユーザの入力を使用しようとしています...C++プログラムからcmdに引数を渡すには?

私は私のプログラムからCMDを使用することを知っている:

system("SayStatic.exe hello world"); 

が、これは私が必要なものである:

char item[100]; 
gets(item); 
//after getting the input I need to pass it to SayStatic.exe that is the part I dont know 

私は()SYSYTEMを使用することはできません知っています。 spawnl()やexecl()のようなものはうまくいくでしょうか?

+0

を? –

+0

変数であるために引数が必要です – user1232148

+0

途中で入力のために 'gets'を使用しないでください。大量の穴です。バッファオーバーフローに簡単に使用できます。いずれにしても、C++プログラマは 'cstdio'のものではなく' iostream'のものを使用するべきです。 – paxdiablo

答えて

3

最初に、gets()を使用しないでください。文字列よりも長い入力がスタックメモリを上書きし、未定義の動作を引き起こす(たぶん何らかのクラッシュ)ので、標準ライブラリには含まれていないはずです。 Cの文字列を使用している場合はfgets()が代用可能です。

次のようなC++の文字列使用してこれを行うことができます:あなたは `システムを()`を使用することはできませんなぜ

std::string line; 
std::getline(std::cin, line); 
system(("SayStatic.exe " + line).c_str()); 
+0

_included_するべきかどうかは議論の余地がある - ANSIの命令は、新しい言語を設計するのではなく、既存の慣習をコード化し、ISOは下位互換性を非常に真剣に受けとめていた。議論の余地がないのは、決してそれを使うべきではないという事実です:-)問題を解決するために、特に 'sprintf'等を使わずに、問題を解決するため+1。 – paxdiablo

関連する問題