2012-02-25 52 views
1

我試圖使用用戶的輸入被用作將被傳遞到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

爲什麼你就不能使用'系統()'? – 2012-02-25 06:24:54

+0

我需要的參數是一個變量 – user1232148 2012-02-25 06:27:03

+0

不要使用'gets'來輸入,這是一個巨大的漏洞,很容易用於緩衝區溢出。無論如何,C++程序員應該使用'iostream'東西,而不是'cstdio'東西。 – paxdiablo 2012-02-25 07:33:57

回答

3

首先,千萬不要用gets()。它不應該包含在標準庫中,因爲比字符串更長的輸入會覆蓋堆棧內存並導致未定義的行爲(可能是某種類型的崩潰)。如果您使用C字符串,則fgets()是可接受的替代品。

爲此,您可以用C++字符串是這樣的:

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

它是否應該被_included_是有爭議的 - ANSI的任務是編纂現有的實踐,而不是設計一種新的語言,ISO非常重視向後兼容性。無可爭辯的是,我們絕不應該使用它:-)無論如何,+1來解決問題,特別是不使用'sprintf'等人。 – paxdiablo 2012-02-25 07:37:11

相關問題