arg是什么函数_看完你就明白:什么情况下该用带参数的int main(int argc, char *argv[])...

f4b4d96c871081a3da4ae2dc9ceee289.png

微信公众号:"C语言修仙"

之前的文章中提到,C语言main函数可以写作int main(void),也可以写成int main(int argc, char *argv[]) 。

到底哪种main函数写法对?main()、int main(int argc, const char * argv [])...

文章的最后,我们说:一般情况下,你编程用int main(void)就可以了。那你可能会问:一般情况指哪些情况?什么情况下要用int main(int argc, char *argv[]) ?

这篇文章给你解答。

1.什么情况下用int main(int argc, char *argv[]) 。

我们需要和程序进行交互。你知道,在程序运行过程中,可以通过scanf函数,输入数组、字符、字符串给程序处理。

那么能不能在程序启动的时候(),就携带参数给他,而不是运行过程中敲入东西给程序。这时候需要用用到带参数(int argc, char *argv[])的main函数。

你很可能用过ping命令,去ping一个IP地址,比如:ping 192.168.0.1

其实这个里的ping就是一个exe程序,"192.168.0.1"是一个字符串,是我们传递给程序的参数。

所以,当你需要程序带参数地启动的时候,就用int main(int argc, char *argv[])。

2.怎么使用argc和argv参数。

你可能会想,argc和argv是传给main函数的参数。那这个参数是谁传的?main函数不是已经是入口函数了吗?还有别的函数调用main函数?

argc和argv是你通过命令行窗口传给程序的。

你先猜猜下面的程序运行结果是什么?

#include <stdio.h>
int main(int argc , char *argv[])
{
    printf("argc = %dn", argc);
    printf("%sn", *argv);    
}

我们编译运行,结果如下。有没有发现,*argv是字符串,字符串的内容是exe程序文件名(包括它的完整路径)。

3d2a5e6eeeb730444f121a90c86e2f7c.png

argc = 1,这个表示什么?表示的是命令行有1个字符串,这个字符串是"Dtestmain_arg_argv.exe",也就是我们的程序名。

你可能会想:

(1)那怎么通过命令行给程序传递字符串呢?

(2)程序是怎么样获取到传递来的字符串呢?

答案是:

(1)用这样的格式给程序传递字符串:

程序名.exe 字符串1 字符串2 字符串3 ... 字符串n

执行exe程序时,你可以在.exe名字后面加上任意多个字符串。每个字符串用空格隔开。

(2)在main函数里通过循环依次一个个地来接收字符串。

举个例子:

我们来做这样一个程序:

要求:

传递的某个字符串等于"Aa"就打印"A for apple",传递的某个字符串里等于"Bb"就输出"B for ball",传递的某个字符串等于"Cc"就输出"C for ball",传递的某个字符串等于"Dd"就输出"D for dog".

先上代码:

#include <stdio.h>
#include <string.h>

int main(int argc , int *argv[])
{
    printf("argc = %dn", argc);

    argv++;
    while (*argv){
        if (strcmp(*argv, "Aa") == 0){
            argv++;
            printf("A for applen");

        }else if (strcmp(*argv, "Bb") == 0){
            argv++;
            printf("B for balln");

        }else if (strcmp(*argv, "Cc") == 0){
            argv++;
            printf("C for catn");

        }else if (strcmp(*argv, "Dd") == 0){
                printf("in dn");
            argv++;
            printf("D for dogn");
        }
    }
}

注意这个时候,我们就不能直接在编辑器里直接运行程序,因为这样自动运行是没有参数的。

点下图中的编译按钮。然后进入源文件所在文件夹:D:test。可以看到生成了一个文件名叫main_argc_argv.exe,这个就是编译生成的可执行文件,俗称“程序/软件”。

fa92085964283f9e971ce11bda176ef0.png

D:testmain_argc_argv.exe

40b74066fd7aff3af0b14d2c404dd27c.png

那么怎么运行呢?

打开命令行,鼠标左键选中.exe文件,拖到cmd窗口中:

aec739238b4194f381a7e80622329d79.png

然后在后面加上我们想要加的字符串。这里加上"Cc"和"Aa"

121b5d871e6c3d578794bd70a7ab39e6.png

然后,按回车键运行。

d2d95ac8c3483e20f1115ed48aa2d110.png

如我们所期望的,命令行我们敲参数时,Cc在Aa前面,所以先打印出"C for cat",后打出"A for apple"。

注意:这里的argc是3,表示的是什么呢?

之前我们说过,arrgc=1时,表示命令行只有一个字符串,是程序名"Dtestmain_arg_argv.exe"。

3表示命令行有3个字符串,分别是:程序名"Dtestmain_arg_argv.exe"、"Cc"和"Aa"。

这下你应该明白怎么使用main函数中的参数了。

3.总结

当你需要程序带参数地启动的时候,就用int main(int argc, char *argv[])。

http://weixin.qq.com/r/ODiagq-EufLGrevh920q (二维码自动识别)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值