如何使用C中的命令行参数初始化char数组

时间:2014-02-02 00:28:06

标签: c

我刚刚开始学习C,我有一个基本的问题。我如何读出命令行参数。例如,如果我执行:

       ./main "test"

如何将命令行参数“test”变为变量:

         int main(int argc, char **argv){
             char s[] is supposed to equal "test"
         }

编辑:基本上我想创建一个等于argv [1]的新char数组。

2 个答案:

答案 0 :(得分:0)

char * s = argv[1];//to read the test
if(strcmp(s,"test") == 0){
    //the command line argument is equal to the string test
 }

答案 1 :(得分:0)

main函数的参数argcargv用于访问启动时传递给程序的字符串参数。 argc是传递的参数数量。例如,当这样运行时 - ./myprogram arg1 arg2 arg3argc的值为4.这是因为用户传递的字符串也会传递给程序名。这是argv[0]指向字符串myprogramargv[1]指向arg1等。要获得第n个参数,您必须访问argv[n + 1]
知道这一点,要制作第一个参数的副本,你可以按如下方式进行

char * s = malloc(strlen(argv[1]) + 1);
strcpy(s, argv[1]);

但是我建议在复制之前确保你想要的参数不指向NULL。这是argc方便的地方。在访问argv[1]之前,我会检查是否argc >= 2

这里有一个更好的解释http://crasseux.com/books/ctutorial/argc-and-argv.htmlhttp://www.cprogramming.com/tutorial/c/lesson14.html

编辑: 请记住通过free释放您分配的任何内存 例如。 free(s)