1

我真的不知道如何解释这一点,但这是我的问题:

我试图让我的程序接受命令行参数,然后通过运行程序。Linux 命令行 (CentOS 6)。

下面是主要功能:

int main(int argc, char *argv[])

我正在尝试运行一个 Linux 程序,代码如下:

system("nmap -sT -p 19 1.1.1.* -oG - | grep 19/open > temp");

我想用我输入到 C 程序中的第一个参数替换 '1.1.1.*',例如:

system("nmap -sT -p 19 ", (argv[1]) "-oG - | grep 19/open > temp");

我尝试了多种方法,但似乎都没有奏效。

总而言之,我试图将我输入到程序中的第一个参数用于替换系统函数中的“1.1.1.*”。我不知道如何做到这一点,我是 C 编程的新手。谢谢大家的回复。

4

2 回答 2

1

snprintf是最安全的方法,这是一个简单的例子,没有任何检查argc等...:

#include <string.h> 
#include <stdio.h>

int main(int argc, char *argv[]) 
{
    char buf[200] ;
    char str1[] = "nmap -sT -p 19  ";
    char str2[] = " -oG - | grep 19/open > temp";

    snprintf(buf, 200, "%s%s%s", str1, argv[1], str2);
    printf( "%s\n", buf ) ;;
}
于 2013-07-30T02:42:20.883 回答
0

只需使用以下语法在 Linux 中接受命令行参数。./程序 arg1 arg2

于 2013-07-30T02:48:35.683 回答