目录

文章目录

  • 目录
  • 前文列表
  • 命令行参数

前文列表

《程序编译流程与 GCC 编译器》
《C 语言编程 — 基本语法》
《C 语言编程 — 基本数据类型》
《C 语言编程 — 变量与常量》
《C 语言编程 — 运算符》
《C 语言编程 — 逻辑控制语句》
《C 语言编程 — 函数》
《C 语言编程 — 高级数据类型 — 指针》
《C 语言编程 — 高级数据类型 — 数组》
《C 语言编程 — 高级数据类型 — 字符串》
《C 语言编程 — 高级数据类型 — 枚举》
《C 语言编程 — 高级数据类型 — 结构体与位域》
《C 语言编程 — 高级数据类型 — 共用体》
《C 语言编程 — 高级数据类型 — void 类型》
《C 语言编程 — 数据类型的别名》
《C 语言编程 — 数据类型转换》
《C 语言编程 — 宏定义与预处理器指令》
《C 语言编程 — 异常处理》
《C 语言编程 — 头文件》
《C 语言编程 — 输入/输出与文件操作》
《C 语言编程 — 堆栈与内存管理》

命令行参数

C 语言支持在执行程序时,从命令行传入参数值给程序,这些值被称为命令行参数。当希望从外部控制程序,而不是在代码内对这些值进行硬编码时,非常常见的一种手段。命令行参数是使用 main() 函数参数来处理的:

  • int argc:标识传入的参数的个数。
  • char *argv[]:是一个字符串指针数组,指向传递给程序的每个参数。
#include <stdio.h>int main(int argc, char *argv[]) {printf("Program name %s\n", argv[0]);if (argc == 2) {printf("The argument supplied is %s\n", argv[1]);}else if (argc > 2) {printf("Too many arguments supplied.\n");}else {printf("One argument expected.\n");}
}

运行:

$ ./main fanguiju
Program name ./main
The argument supplied is fanguiju

其中,argv[0] 存储的是程序的名称,argv[1] 才是指向第一个命令行参数的指针,*argv[n] 则是最后一个参数。如果没有提供任何参数,argc 将为 1,否则,如果传递了一个参数,argc 将被设置为 2。

多个命令行参数之间用空格分隔,但是如果参数本身带有空格,那么传递参数的时候应把参数放置在双引号 “” 或单引号 ‘’ 内部。

需要注意的是,也可以使用 char **argv 代替 char *argv[] 形参,以下几个概念竟然让人混淆:

int aArray[5] = {1, 2, 3, 4, 5};  // 数组变量。
char greeting[] = "Hello";        // 字符串变量,本质是一个以 null 字符结尾的字符数组。
char *ch;                         // 字符指针变量,指向字符的指针。
char *stuname_temp[STUDENT_NUM];  // 指针数组变量,每个元素都指向字符(或字符串)的指针的数组。
char **ch;                        // 指针指针变量,指向字符指针的指针。

当 STUDENT_NUM 为 1 或不填写时,char *stuname_temp[STUDENT_NUM]char **ch 的变量名本质是一致的。我们在数组章节提到过,数组变量名就是指向数组第一个元素的指针,如果这个元素的值是一个指针,那么数组变量名的本质就是一个指针指针。

#include <stdio.h>int main() {char **a;char *b[] = {0};printf("a: %lu\n", sizeof(a));printf("b: %lu\n",  sizeof(b));return 0;
}

运行:

$ ./main
a: 8
b: 8

C 语言编程 — 指令行参数相关推荐

  1. c语言学习进阶-C语言带命令行参数的文件数据批量计算

    C语言带命令行参数的文件数据批量计算 (1)假设输入文件中的数据为多行整数,把数据文件命名为"InputData.txt",也可以命名为任意的文件名,尝试设计一个c 语言程序, 主 ...

  2. c语音学习进阶-C语言带命令行参数的程序设计

    C语言带命令行参数的程序设计 (1)深入理解并学习带命令行参数的程序设计方法,使用c 语言完成带命令行参数的科学计算程序,能从给定的任意文件名的文件当中输入数据,并能向给定的任意文件名的输出文件当中输 ...

  3. 51单片机串行口程序c语言编程,单片机C语言编程串行口通讯.ppt

    单片机C语言编程串行口通讯 第7章 MCS-51单片机串行口 第7章 MCS-51单片机串行口 目 录 7.1 串行通信基本知识 7.2 串行口结构及控制 7.3 串行口工作方式 7.4 串行口应用举 ...

  4. Go语言中命令行参数的实现

    为什么80%的码农都做不了架构师?>>>    在写命令行程序时,对命令参数进行解析是常见的需求.各种语言一般都会提供解析命令行参数的方法或库,以方便程序员使用.如果命令行参数纯粹自 ...

  5. 在c语言中命令行参数是什么,C语言命令行参数

    这是可能在命令行中的一些值传递给C程序执行.特别是从参数传入,而不是外界硬编码写入这些值到代码控制程序中,这些值被称为命令行参数,很多时候,它们对程序很重要. 命令行参数使用main()函数的参数,其 ...

  6. C语言对命令行参数求和,C语言命令行参数汇总

    从命令行传递的参数称为命令行参数.这些参数由main()函数来处理的. 要支持命令行参数,您需要更改main()函数的结构,如下所示 - int main(int argc, char *argv[] ...

  7. DPDK — DPDK APP 的指令行参数

    目录 文章目录 目录 Lcore-related options(逻辑线程相关参数) Device-related options(设备相关参数) Multiprocessing-related op ...

  8. [C语言编程入门]带参数宏定义

    问题描述 定义一个带参的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参.输出已交换后的两个值. 解决方案: #include<stdio.h> #define swap( ...

  9. c语言中命令行参数argc,argv[]详解

    argc 是 argument count的缩写,表示传入main函数的参数个数: argv 是 argument vector的缩写,表示传入main函数的参数序列或指针,并且第一个参数argv[0 ...

最新文章

  1. java 环境网站404_配置JavaWeb项目环境,修改jdbc配置文件,浏览器报404错误,不修改可以正常部署,jdbc没有改错...
  2. 一个简单案例,5 分钟看懂 Java Lamdba 表达式
  3. jquery.easing.js(转)
  4. 在 Java CAPS 中使用 LDAP
  5. 数据结构实验三:Huffman树及Huffman编码的算法实现
  6. 手机游戏降低游戏延迟的软件_怎么降低手机网络延迟(减少网络延迟的5个小技巧)...
  7. 08方法重载,覆写,多态
  8. Linux系统各文件、目录介绍
  9. 软考笔记第九天之多媒体基础
  10. 基于STM32的中文字库解码
  11. SMbus和I2C异同, PMBUS
  12. 用python计算工程量_基于Python脚本程序的电缆工程量快速统计方法与流程
  13. 安装VMware虚拟机及镜像文件
  14. MATLAB导入数据
  15. 在excel中如何筛选重复数据_如何将Excel重复数据筛选出来?简单技巧有三种!...
  16. 虚拟现实应用案例_虚拟现实的应用
  17. Marlin固件 ---- G_Code 命令解析
  18. 我的小程序之个人所得税计算器
  19. 如何在一个事件中使用(调用)另一个事件
  20. ★【树状数组】【NOI2008】糖果雨

热门文章

  1. ubuntu mysql vi_Ubuntu16 下安装 mysql
  2. python3.8安装requests库_再见requests!Python下一代 http客户端出炉啦!
  3. java 判断一个数字是2倍数_如何判断语言发育迟缓的原因|一个2岁半不会说话的案例...
  4. 脑电分析系列[MNE-Python-5]| Python机器学习算法随机森林判断睡眠类型
  5. python读取.edf文件
  6. eeglab中文教程系列(6)-数据叠加平均{1}(Data averaging)
  7. 一举打败16个同类模型,视频超分比赛冠军算法入选CVPR 2022,来自商汤南洋理工大学...
  8. 达摩院2022年十大科技趋势发布:AI for Science刚开始,大模型进入冷静期
  9. 高通加大5G应用力度:发布又一款手机芯片,还推出机器人和无人机5G系统
  10. 4行代码再现《黑客帝国》数字雨,在终端实现的那种