首页 > 其他分享 >C语言:命令行参数

C语言:命令行参数

时间:2022-08-29 18:18:14浏览次数:56  
标签:count int argv C语言 参数 命令行 main

命令行参数

在图形界面普及之前都使用命令行界面。DOS和UNIX就是例子。Linux终端提供类UNIX命令行环境。

命令行(command line)是在命令行环境中,用户为运行程序输入命令的行。命令行参数(command-line argument)是同一行的附加项。

例如:

demo.exe hello world

C语言程序可以读取并使用这些附加项,如下图:

image-20220829174033199

下面是一个典型例子:通过main的参数来读取这些附加项。

#include <stdio.h>

int main(int argc, char *argv[]) {
    int count;
    printf("count of arg: %d\n", argc - 1);
    for (count = 1; count < argc; ++count) {
        printf("%d: %s\n", count, argv[count]);
    }
    printf("\n");
    return 1;
}

将程序编译成可执行文件,并运行:

image-20220829174320208

说明:

C编译器允许main()没有参数或者有两个参数(一些实现允许main()拥有更多参数,属于对标准的扩展)。main函数有两个参数时,第一个参数是命令行中字符串数量。(过去,这个int类型参数被称为argc)。系统用空格表示一个字符串的结束和下一个字符串的开始。

上面demo示例中包括命令名一共有三个字符串,其中两个供demo示例使用。

该程序把命令行字符串存储在内存中,并把每个字符串的地址存储在指针数组中,该数组的地址被存储在main()的第二个参数中,这个指向指针的指针成为argv(表示参数值)。

如果系统允许(一些操作系统不允许这样),就把程序本身的名称赋给argv[0],然后把随后的第1个字符串赋给argv[1],以此类推。

在我们的例子中,有下面的关系:

argv[0] 指向 c_demo2.exe
argv[1] 指向 hello
argv[2] 指向 world

main()中形参形式与其他带形参的函数相同,许多程序员用不同的形式声明argv

char **argvchar *argv[]等价,因为argv是一个指向指针的指针。

int main(int argc, char **argv)

顺带一提,许多环境(包括UNIX和DOS)都允许用双引号把多个单词括起来形成一个参数。例如:

c_demo2.exe "hello world" abc

这行命令行参数把字符串"hello world"复制给argv[1]abc赋值给argv[2]

标签:count,int,argv,C语言,参数,命令行,main
From: https://www.cnblogs.com/wwjj4811/p/16636842.html

相关文章

  • docker 容器自动重启参数 --restart
    最近新加了一个容器,发现这个容器在docker服务重启之后不会自动起来。原来是少了--restart参数dockerrun-d--restart=always--name=nginx605c77e624dd--restart=always......
  • 解决层级按序排号、接口返回参数双向绑定值无法修改问题、表单重置、路由截取参数、目
    1、item.optionValues.sort((a,b)=>a['optionSort']-b['optionSort'])  //a-b从小到大  b-a从大到小2、接口返回参数双向绑定值无法修改问题用this.$set() /......
  • Python命令行运行脚本时传入参数的方式
    Python命令行运行脚本时传入参数的两种方式1、pythonscript.py0,1,232、pythonscript.py--a=0,1,2--b=3对应不同的参数解析方式,分别为sys.argv,argparse(1) sys.......
  • 硬件常用参数设置
    硬件常用参数设置整理者:ZHOU邮箱:[email protected] 常用阻抗参数信号TraceImpedanceMaxtracelength  Ethernet95Ω±15%differential;55Ω±15%......
  • C语言猜数字游戏
    C语言猜数字游戏题目十:猜数字游戏1.设计要求:有一定的容错功能,界面友好,功能齐全。2.设计提示:猜数字游戏规则:a)一个四位数,各位上的数不重复,从1到9。b)按以下......
  • C# webApi接受JSON格式参数
    [HttpPost]publicstringTestData(){try{//接收post传入的数据varrequest......
  • C语言学习进程(翁恺)
    1.0——C的基本结构及语句1.1——循环(loop)1.2——多路分支switch-case1.3——break&continue1.4——practice1  C的框架#include<stdio.h>intmain()......
  • Mysql8.0修改lower_case_table_names参数导致重启失败
    GreatSQL社区原创内容未经授权不得随意使用,转载请联系小编并注明来源。GreatSQL是MySQL的国产分支版本,使用上与MySQL一致。事件起因:在测试一个数据迁移工具时,源端orac......
  • Apache日志 LogFormat参数说明
    Apache日志LogFormat参数说明第2页_服务器应用_Linux公社-Linux系统门户网站 https://www.linuxidc.com/Linux/2013-09/89741p2.htm在Apache的配置文件httpd.conf里默......
  • C语言常用编译选项
    目录编译选项-Wall-Wextra-Werror-Werror=implicit-function-declaration-Werror=unused-variable参考编译选项当-Wxx时,指的是,针对某个类型产生告警,特殊的-Wall是对所有......