• 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]);
  • 相关阅读:
    java大数取余
    hdu--5351--MZL's Border
    NYOJ--水池数目
    NYOJ--32--SEARCH--组合数
    NYOJ--20--搜索(dfs)--吝啬的国度
    hdu--4148--Length of S(n)
    hdu--2098--分拆素数和
    hdu--1873--看病要排队
    hdu--1870--愚人节的礼物
    hdu--1237--简单计算器
  • 原文地址:https://www.cnblogs.com/freshmen/p/4452073.html
Copyright © 2020-2023  润新知