我真的不知道該如何解釋這一點,但這裏是我的問題:需要幫助的簡單的C命令行參數
我試圖讓我的程序接受命令行參數,然後通過運行一個程序。 Linux命令行(CentOS 6)。
繼承人的主要功能:
int main(int argc, char *argv[])
我想運行一個Linux程序,下面的代碼: '1.1.1。*'
system("nmap -sT -p 19 1.1.1.* -oG - | grep 19/open > temp");
我想,以取代第一論點我輸入我的C程序,例如:
system("nmap -sT -p 19 ", (argv[1]) "-oG - | grep 19/open > temp");
我已經嘗試了多種方法,並似乎沒有工作。總結一下,我試圖把第一個參數輸入到我的程序中,並用它來代替系統函數中的'1.1.1。*'。我不知道如何做到這一點,我是C編程新手。謝謝大家的回覆,非常感謝。
請看[sprintf](http://www.manpagez.com/man/3/sprintf/)。使用'sprintf'將'argv [1]'和你想要運行的命令結合起來,然後將輸出存儲到一個變量中,然後像下面這樣將這個變量傳遞給系統:'char * a = sprintf(「stuff%s」,的argv [1]);系統(a);' –
'sprintf'和'strcat'都要求緩衝區溢出(尤其是在接受用戶輸入的構造字符串的一部分時),除非您仔細追蹤結果的長度。而且由於你*會跟蹤你可以(而且應該!)使用'snprintf'來代替。 – dmckee
@dmckee你是對的,'snprintf'是一個更好的選擇。 –