zoukankan      html  css  js  c++  java
  • main函数argc,argv操作

          使用main(int argc, char *argv[])==main(int argc, char **argv)的基本操作是linux编程的最基本的一步,在windows下也是exe脱离IDE运行的必学技能,程序编译成功后,在cmd下,使用参数输入来运行程序,自己控制程序参数的输入来测试和运行程序。

          1、 int argc, char *argv[]介绍

           int argc代表输入参数的个数,英文全名arguments cout, 以空格来计数,程序名(*.exe)是其第一个参数。

          char *argv[]以字符数组的方式储存参数内容,英文全名arguments vector, argv[1]代表程序名。

     1 #include<iostream>
     2 #include<stdlib.h>
     3 
     4 using namespace std;
     5 
     6 int main(int argc,char *argv[])
     7 {
     8   cout<<"the argc is "<<argc<<endl;
     9   for (int i = 0;i<argc;i++)
    10   {
    11     cout<<"argv["<<i<<"] is "<<argv[i]<<endl;
    12   }
    13 }

    运行结果如下:  

    2、对argc和argv进行操作

            对输入参数的个数和内容操作简单的可以归纳为对int型变量和二维的字符数组char *argv[]的操作。

     1 #include <iostream>
     2 #include <stdlib.h>
     3 #include <string>
     4 
     5 using namespace std;
     6 
     7 //函数的使用方法
     8 void printUsage()
     9 {
    10   cout<<"printUsage"<<endl;
    11 };
    12 
    13 int main(int argv,char *argc[])
    14 {
    15   int num;
    16   if (argv == 1)//如果没有第二个参数,打印使用方法
    17   {
    18     printUsage();
    19     return -1;
    20   }
    21   for (int i = 1;i<argv;i++)
    22   {
    23     //当用户输入 --help或者?的时候,打印使用方法
    24     if ((string(argc[i]) == "--help")||(string(argc[i]) == "?"))
    25     {
    26       printUsage();
    27       return -1;
    28     }
    29     //输入--times和一个数字的时候,把num赋值为输入的数字
    30     else if ((string(argc[i])=="--times"))
    31     {
    32       num = atoi(argc[++i]);
    33     }
    34     //如果输入的是其他字符,无效输入
    35     else
    36       num = 0;
    37   }
    38   //打印test output,次数有输入的数字确定
    39   for( int i = 0;i<num;i++)
    40   {
    41     cout<<"test output "<<i+1<<" time"<<endl;
    42   }
    43 }

    测试结果:

    NOTE:

         程序主要是测试将参数转换为字符串和int型数字,并对字符串和数字进行处理的功能实现。

         可以看出将字符数组的内容转换为字符串是:

    string(argc[i]) == "--help"

        将字符数组的内容转化为 int 型 是:

    num = atoi(argc[++i]);
  • 相关阅读:
    0209利用innobackupex进行简单数据库的备份
    0208如何利用federated配置远程的数据库和本地数据相互交互
    0208MySQL5.7之Group Replication
    解决问题的方法
    0123简单配置LNMP
    0120Keeplived实现自动切换Mysql服务
    0116MySql主从复制监控
    大数据导入EXCEL
    OSI结构和TCP/IP模型
    ORA-12154 TNS无法解析指定的连接标识符
  • 原文地址:https://www.cnblogs.com/freshmen/p/4452073.html
Copyright © 2011-2022 走看看