C 语言编程 — 指令行参数
目录
文章目录
- 目录
- 前文列表
- 命令行参数
前文列表
《程序编译流程与 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 语言编程 — 指令行参数相关推荐
- c语言学习进阶-C语言带命令行参数的文件数据批量计算
C语言带命令行参数的文件数据批量计算 (1)假设输入文件中的数据为多行整数,把数据文件命名为"InputData.txt",也可以命名为任意的文件名,尝试设计一个c 语言程序, 主 ...
- c语音学习进阶-C语言带命令行参数的程序设计
C语言带命令行参数的程序设计 (1)深入理解并学习带命令行参数的程序设计方法,使用c 语言完成带命令行参数的科学计算程序,能从给定的任意文件名的文件当中输入数据,并能向给定的任意文件名的输出文件当中输 ...
- 51单片机串行口程序c语言编程,单片机C语言编程串行口通讯.ppt
单片机C语言编程串行口通讯 第7章 MCS-51单片机串行口 第7章 MCS-51单片机串行口 目 录 7.1 串行通信基本知识 7.2 串行口结构及控制 7.3 串行口工作方式 7.4 串行口应用举 ...
- Go语言中命令行参数的实现
为什么80%的码农都做不了架构师?>>> 在写命令行程序时,对命令参数进行解析是常见的需求.各种语言一般都会提供解析命令行参数的方法或库,以方便程序员使用.如果命令行参数纯粹自 ...
- 在c语言中命令行参数是什么,C语言命令行参数
这是可能在命令行中的一些值传递给C程序执行.特别是从参数传入,而不是外界硬编码写入这些值到代码控制程序中,这些值被称为命令行参数,很多时候,它们对程序很重要. 命令行参数使用main()函数的参数,其 ...
- C语言对命令行参数求和,C语言命令行参数汇总
从命令行传递的参数称为命令行参数.这些参数由main()函数来处理的. 要支持命令行参数,您需要更改main()函数的结构,如下所示 - int main(int argc, char *argv[] ...
- DPDK — DPDK APP 的指令行参数
目录 文章目录 目录 Lcore-related options(逻辑线程相关参数) Device-related options(设备相关参数) Multiprocessing-related op ...
- [C语言编程入门]带参数宏定义
问题描述 定义一个带参的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参.输出已交换后的两个值. 解决方案: #include<stdio.h> #define swap( ...
- c语言中命令行参数argc,argv[]详解
argc 是 argument count的缩写,表示传入main函数的参数个数: argv 是 argument vector的缩写,表示传入main函数的参数序列或指针,并且第一个参数argv[0 ...
最新文章
- java 环境网站404_配置JavaWeb项目环境,修改jdbc配置文件,浏览器报404错误,不修改可以正常部署,jdbc没有改错...
- 一个简单案例,5 分钟看懂 Java Lamdba 表达式
- jquery.easing.js(转)
- 在 Java CAPS 中使用 LDAP
- 数据结构实验三:Huffman树及Huffman编码的算法实现
- 手机游戏降低游戏延迟的软件_怎么降低手机网络延迟(减少网络延迟的5个小技巧)...
- 08方法重载,覆写,多态
- Linux系统各文件、目录介绍
- 软考笔记第九天之多媒体基础
- 基于STM32的中文字库解码
- SMbus和I2C异同, PMBUS
- 用python计算工程量_基于Python脚本程序的电缆工程量快速统计方法与流程
- 安装VMware虚拟机及镜像文件
- MATLAB导入数据
- 在excel中如何筛选重复数据_如何将Excel重复数据筛选出来?简单技巧有三种!...
- 虚拟现实应用案例_虚拟现实的应用
- Marlin固件 ---- G_Code 命令解析
- 我的小程序之个人所得税计算器
- 如何在一个事件中使用(调用)另一个事件
- ★【树状数组】【NOI2008】糖果雨
热门文章
- ubuntu mysql vi_Ubuntu16 下安装 mysql
- python3.8安装requests库_再见requests!Python下一代 http客户端出炉啦!
- java 判断一个数字是2倍数_如何判断语言发育迟缓的原因|一个2岁半不会说话的案例...
- 脑电分析系列[MNE-Python-5]| Python机器学习算法随机森林判断睡眠类型
- python读取.edf文件
- eeglab中文教程系列(6)-数据叠加平均{1}(Data averaging)
- 一举打败16个同类模型,视频超分比赛冠军算法入选CVPR 2022,来自商汤南洋理工大学...
- 达摩院2022年十大科技趋势发布:AI for Science刚开始,大模型进入冷静期
- 高通加大5G应用力度:发布又一款手机芯片,还推出机器人和无人机5G系统
- 4行代码再现《黑客帝国》数字雨,在终端实现的那种