c语言中int main(int argc, char argv)中argc和argv的作用

举报
樊心昊 发表于 2020/05/25 12:27:01 2020/05/25
【摘要】 摘要:我们在开发C语言时,经常看到int main(int argc, char *argv[]),但是没有太多的关注于argc和argv这两个参数,其实它们有很多的作用呢。编写一个计算器 为了简单起见,我在Ubuntu下编写了一个支持个位数“加、减”操作的计算器,我们待会通过这个实例向大家讲解argc和argv参数的作用。先看使用操作 ...

摘要:我们在开发C语言时,经常看到int main(int argc, char *argv[]),但是没有太多的关注于argc和argv这两个参数,其实它们有很多的作用呢。

编写一个计算器

       为了简单起见,我在Ubuntu下编写了一个支持个位数“加、减”操作的计算器,我们待会通过这个实例向大家讲解argc和argv参数的作用。

先看使用操作

                          image.png                   

我们可以使用./calc程序,第一个参数传入运算符(+或-),第二个参数传入(第一个加数或者被减数),第三个参数传入(第二个加数或者减数),就可以得到运算结果。

       来看代码(代码的写得很糟是为了简单起见,大家如果觉得有用可以自己改进)。

1.   #include <stdio.h>  

2.     

3.   int main(int argc, char *argv[])  

4.   {  

5.      int i = 0, result = 0;  

6.      char opt = 0;  

7.      if (argc == 1)  

8.      {  

9.        printf("Please Enter Parameter\r\n");  

10.       return -1;  

11.     }  

12.     switch (argv[1][0])  

13.     {  

14.       case '+':  

15.         printf("%d + %d = %d\r\n", (argv[2][0]-'0'), (argv[3][0]-'0'), (argv[2][0]-'0')+(argv[3][0]-'0') );  

16.         break;  

17.    

18.       case '-':  

19.         printf("%d - %d = %d\r\n", (argv[2][0]-'0'), (argv[3][0]-'0'), (argv[2][0]-'0')-(argv[3][0]-'0') );  

20.         break;  

21.       }  

22.    return 0;  

23. }  

我们的运算数据和运算符都是都过argc和argv参数传递进来的。现在我们开始第二个实验向大家讲解argc和argv参数的作用。

二、编写一个打印argc和argv的程序

首先来看代码:

1.  #include <stdio.h>  

2.    

3.  int main(int argc, char *argv[])  

4.  {  

5.      int i = 0;  

6.      printf(" argc = %d\r\n", argc);  

7.      for (i=0; i<argc; i++)  

8.      {  

9.          printf("argv[%d] = %s\r\n", i, argv[i]);  

10.     }  

11.   

12.     return 0;  

13. }  

我分别传入0个参数,1个参数,2个参数,大家来看实验结果:

    image.png

我们在不传参数时,默认有1个参数,它的内容是字符串”./test”,也就是我们执行文件时的执行指令。

argc = argument cout,表示传入参数的个数;argv是一个字符串指针数组,表示传入参数的内容,我们可以根据argc中的值去判断字符串指针数组中的个数,每一个数组成员都是一个字符串指针地址,可以用printf打印出来。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。