首页 > 解决方案 > 如果有不同数量的命令行参数怎么办?我如何在 C 中处理它?

问题描述

// test.c
int main(int argc, char* argv[])
{
   printf("%s \n", argv[1]);
   printf("%s \n", argv[2]);
}

如果我想进入怎么办

gcc -o test test.c
./test gs -ef

或者

./test ls

等等

当我只输入一个参数(例如 ./test date)时,会出现这样的错误消息(Segmentation fault (core dumped))

当在这种多种情况下可能出现两个参数或一个参数时,我该如何编写不打印错误消息的代码?

标签: clinux

解决方案


argc:传递的参数数量。

argv:已传递参数的二维数组。

请注意,中的第零位argv是为程序名称保留的,因此例如您使用编译的gcc -o test test.c,argv[0]将包含test. 然后,您可以像这样使用argc循环argv

while (argc >= 0) {
    printf("%s \n", argv[argc]);
    argc--;
}

这将导致向后打印以程序名称结尾的参数列表。


推荐阅读