命令行编译中的argc argv

在需要进行输入参数传递的函数中,我们经常可以见到int main(int argc ,char *argv[ ])这样的表达形式,argc ,argv这两个参数是什么呢?是系统的默认参数吗?查了一下资料,才终于搞懂这两个参数,实际上其使用也是很简单明了的。

argc与argv,是unix与linux中的标准写法,在用命令行编译程序的时候有效。

其中argc是int类型,用来统计你输入的,给main函数的命令行参数的个数;argv是字符串数组,用来存放指向输入的字符串参数的指数指针,每一个数组元素指向一个输入参数。

通过几句简单代码实验,便是一眼看穿这两个参数的作用了:

int main(int argc, char *argv[])
{
int i;
if (argv)
{
for (i = 0; argv[i]; i++)
{
printf("argv[%d] = %s!\n", i,argv[i]);
}
}
}

运行后输出的结果是:



argv[0]保存的是执行文件命令,因此可以看出argv保存的是你输入的所有参数,并不是只限于传给main函数的参数。

argc、argv最常用,也是最简单的场景是在用linux命令行创建新文件的时候,具体代码如下所示:


#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>


void create_file(char *filename)
{
/*创建的文件具有可读写的属性*/
if (create(filename, 0666) < 0)
{
printf("create file %s failure\n", filename);
exit(EXIT_FAILURE);
}
else
{
printf("create file %s success\n", filename);
}


int main(int argc, char *argv[])
{
/*若是传入的参数小于两个,则说明没有输入文件名,创建失败*/
if (argc < 2)
{
perror("you haven't input the filename.please try again!\n");
exit(EXIT_FAILURE);
}
/*以传入的第二个参数为文件名,创建新文件*/
create_file(argv[1]);
exit(EXIT_SUCCESS);
}
}

用argv传递创建文件的名称,用argc进行输入参数数量的记录。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值