c语言:带有参数的main(int argc,char *args[])中参数的含义

泪殇心随风 2016-04-21 05:20:16
详细解释argc,args所表示的含义,还有一般什么情况下使用带有参数的main函数,谢谢
...全文
842 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2016-04-22
  • 打赏
  • 举报
回复
星光伴月 2016-04-22
  • 打赏
  • 举报
回复
main函数的两个参数用于接收命令行的参数,第一个是命令行参数的个数,第二个一个字符串数组,用于访问命令行的参数。 假如你的程序最后生成的程序文件是p.exe,那么,当你双击程序运行它是,相当于在命令行输入以下内容并回车: p.exe 这时,你在程序中可以得到第一个参数是1,第二个参数是含有1个字符串的字符串数组,这1个字符串是"p.exe" 如果想带参数运行你的程序,应该使用Cmd窗口,在cmd窗口中输入你的程序,后面带上参数: p.exe c1 c2 c3 以上表示你的程序带了3个参数运行,3个参数分别是c1,c2和c3,在你的程序中,第一个参数的值将是4,第二个参数将是包含4个字符串的字符串数组,这4个字符串分别是:“p.exe","c1","c2","c3"。 下面是我曾经写过的一个命令行程序的代码片段,楼主可以参考一下这两个参数的用法:


int main(int argc, char* argv[])
{
    bool bRemoveAsterisk=false;
    bool bRemoveSlash=false;
    bool bRemoveBlankLine=false;
    bool bReplaceTab=false;
    String str,file1,file2;
    int n;
    int iErrorCode=0;
    for(int i=1;i<argc;i++)
    {
        str = argv[i];
        if(str=="//") bRemoveSlash=true;
        else if(str=="/*") bRemoveAsterisk=true;
        else if(str=="/b") bRemoveBlankLine=true;
        else if(str.SubString(1,2)=="/t")
        {
            if(str=="/t")
            {
                cout<<"对C语言程序源文件进行处理"<<endl;
                cout<<endl;
                cout<<"CommRemove [/b] [/*] [//] [/t<n>] <file1> <file2>"<<endl;
                cout<<endl;
                cout<<" <file1> 需要处理的源文件"<<endl;
                cout<<" <file2> 处理后的结果文件"<<endl;
                cout<<endl;
                cout<<" [/t<n>] 将源文件中的TAB字符替换为空格,n为替换空格的个数"<<endl;
                cout<<"         其中的<n>必须指定一个数值"<<endl;
                iErrorCode = 3;
            }
            String ns = str.SubString(3,255);
            bReplaceTab=true;
            n = atoi(ns.c_str());
        }
        else if(file1.Length()==0) file1 = str;
        else file2 = str;
    }
    if(iErrorCode!=0) return iErrorCode;
小灸舞 版主 2016-04-21
  • 打赏
  • 举报
回复
argc,argv 用命令行编译程序时有用。 主函数main中变量(int argc, char *argv[])的含义 有些编译器允许将main() 的返回类型声明为void,这已不再是合法的C++ main(int argc, char *argv[], char **env)才是UNIX和Linux中的标准写法。 argc: 整数,用来统计你运行程序时送给main函数的命令行参数的个数 * argv[]: 字符串数组,用来存放指向你的字符串参数的指针数组,每一个元素指向一个参数 argv[0] 指向程序运行的全路径名 argv[1] 指向在DOS命令行中执行程序名后的第一个字符串 argv[2] 指向执行程序名后的第二个字符串 argv[argc]为NULL。 **env:字符串数组。env[]的每一个元素都包含ENVVAR=value形式的字符串。其中ENVVAR为环境变量,value 为ENVVAR的对应值。 argc,argv,env是在main( )函数之前被赋值的,编译器生成的可执行文件,main()不是真正的入口点,而是一个标准的函数,这个函数名与具体的操作系统有关。
dustpg 2016-04-21
  • 打赏
  • 举报
回复
没用过对于没用过命令行的人的确很难说清楚, 去实地用一下就清楚了。 试想一下我想删除某个文件夹,但是没有GUI工具该怎么办.

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧