我刚刚开始学习C,我有一个基本的问题。我如何读出命令行参数。例如,如果我执行:
./main "test"
如何将命令行参数“test”变为变量:
int main(int argc, char **argv){
char s[] is supposed to equal "test"
}
编辑:基本上我想创建一个等于argv [1]的新char数组。
答案 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函数的参数argc
和argv
用于访问启动时传递给程序的字符串参数。 argc
是传递的参数数量。例如,当这样运行时 - ./myprogram arg1 arg2 arg3
,argc
的值为4.这是因为用户传递的字符串也会传递给程序名。这是argv[0]
指向字符串myprogram
,argv[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.html或http://www.cprogramming.com/tutorial/c/lesson14.html
编辑:
请记住通过free
释放您分配的任何内存
例如。 free(s)
。