main函数的参数与命令行参数
我们经常在dos或linux终端下执行一些命令,但这些命令是如何工作的呢。通常他们会跟一些参数,这些参数又是怎么传入到命令里的呢。
这要从先从main()函数的标准写法说起
//demo.c
#include <stdio.h>
int main(int argc, char* argv[])
{
return 0;
}
main()也是可以传参数的,这个参数就是我们经常用的dos、linux命令的参数。
argc : 输入的参数的个数,由系统自动计数赋值,我们无需对它传参。它的值总是>=1,因为它 一个默认参数就是这个可执行文件的名字,准确说是路径+文件名。
argv[]:命令行下输入的参数被传入这个指针数组中。
在linux下编写一个arg.c的文件如下,我们打印出传入参数的个数以及传入的参数。
//arg.c
#include <stdio.h>
int main(int argc, char* argv[])
{
int i;
printf("You given %d arguments\n", argc);
for(i=0; i<argc; i++)
{
printf("The %dth argument is %s.\n", i, argv[i]);
}
return 0;
}
编译gcc -o arg arg.c
生成可执行文件arg.
执行一下我们编写的这条命令吧,看图
我分别使用相对路径(红框)和绝对路径(黄框)执行了arg命令。
这些参数都是字符串,即使传入123它也不能直接计算。