main函数参数规范
main函数参数规范
给main函数传递参数,非常容易,而且每个人都有自己的编写方式;
这里介绍一下标准C库的getopt规范,该规范定义了两类参数:短参数和长参数
#include <unistd.h>
#include <getopt.h>
/*帮助*/
static void usage(FILE *fp, int argc, char *argv[]) {fprintf(fp, "Usage: %s[optionts]\n""Options:\n""-d | --device name Video device name[/dev/video]\n""-h | --help Print this message\n""", argv[0]);
}
/*短参数*/
static const char short_options[] = "d:h";
/*长参数*/
static const struct option long_options[] = {{"device", required_argument, NULL, 'd'},{"help", no_argument, NULL, 'h'},{0,0,0,0},
};
int main(int argc, char *argv[])
{for(;;) {int index;int c;c = getopt_long(argc, argv, short_options, long_options, &index);if(-1==c)break;switch(c) {case 0:break;case 'd':vd->dev_name = optarg;break;case 'h':usage(stdout, argc, argv);break;default:usage(stderr, argc, argv);return -1;}}
短参数
static const char short_options[] = "d:h";
d:
表示d这个标志后面会跟一个具体参数值;
h
表示h这个标志后面没有具体参数值;
长参数
static const struct option long_options[] = {`{"device", required_argument, NULL, 'd'},{"help", no_argument, NULL, 'h'},{0,0,0,0},
};
device, required_argument表示有一个具体参数值;
help, no_argument表示没有具体参数值;
引用
int getopt_long(int argc, char * const argv[],const char *optstring,const struct option *longopts, int *longindex);
argc和argv是main函数的参数,直接传入;
optstring,短参数格式定义;
longopts,长参数格式定义;
longindex,参数位置
全局变量optarg,如果某个标志有具体的值,那么参数可以通过optarg直接获得。
深入探讨
请直接在linux命令行中man getopt
#include <unistd.h>
int getopt(int argc, char * const argv[], const char *optstring);
extern char *optarg;
extern int optind, opterr, optopt;#include <getopt.h>
int getopt_long(int argc, char * const argv[],const char *optstring,const struct option *longopts, int *longindex);
int getopt_long_only(int argc, char * const argv[],const char *optstring,const struct option *longopts, int *longindex);
main函数参数规范相关推荐
- Linux中 C++ main函数参数argc和argv含义及用法
Linux中 C++ main函数参数argc和argv含义及用法 简介 argc 是 argument count的缩写,表示传入main函数的参数个数: argv 是 argument vecto ...
- 【C】关于main()函数参数的问题;
main()函数参数的一般形式: int main(int argc, char *argv[]) int argc用来表示参数的数量,argv[]数组是用来存放参数的值: 但是在linux下的gcc ...
- C语言 main 函数参数 main(int argc, char *argv[]) - C语言零基础入门教程
目录 一.main 函数写法 二.main 函数参数简介 三.使用 main 函数参数 1.打印 main 函数参数 a.直接运行 exe 文件 b.打开 cmd 命令行窗口执行 exe 文件 c.打 ...
- Main函数参数argc,argv说明
C/C++语言中的main函数,经常带有参数argc,argv,如下: int main(int argc, char** argv) int main(int argc, char* argv[]) ...
- main函数参数解析
int argc,char *argv agrc表示参数的个数 argv储存参数 这个函数的意思是逐一输出参数 实际上,main函数也可以带参数.带参数main函数的定义格式如下: void main ...
- C语言main函数参数详解
main函数参数 一共有三个: 1.int argc 整型变量 2.char *argv[] 字符指针的数组,通俗一点就是字符串数组,每个元素都是字符串 3.char *envp[] 字符串数组 这三 ...
- C语言中main函数参数使用
在C99标准中定义main函数两种正确的写法 int main(void); int main(int argc, char* argv[]); 常见的不标准写法 void main() main() ...
- 【C语言】字符串(main函数参数)
文章目录 字符串 字符数组 字符串定义 字符串输入输出scanf&printf 字符串数组 main函数参数 字符串 字符数组 #include <stdio.h>int main ...
- C++:Main函数参数列表及参数类型转换
有三个问题待解决: 1.C/C++ main函数参数意义 2.怎么向main函数传参 3.传进来的参数类型是什么?怎么类型转换? 下面来分别分析! 首先,看代码,然后分析. int main(int ...
最新文章
- 图解Java中那18 把锁
- AI解梦成为现实 未来还有无限可能
- 【图像处理】【计算机视觉】线性邻域滤波专场:方框滤波、均值滤波与高斯滤波...
- 新玩法,CentOS7中LVM通过扩展逻辑卷扩展swap空间
- 高并发下防止库存超卖解决方案
- Windows管道技术
- python filter过滤器的使用_Python filter过滤器原理及实例应用
- Fedora 17配置ssh及Windows远程连接
- win10无法安装.net framework 3.5 解决方案/无法安装NetFx3解决方案
- Xpath--使用Xpath爬取糗事百科成人版图片
- [不限速百度云]两款百度网盘破解版分享
- 怎么让电脑微信安装到别的盘路径
- ObjectARX_AutoCAD创建矩形功能实现
- Windows的hosts文件在哪里?
- android 远程代码,Android 远程连接数据库。。。。。(示例代码)
- html的window效果,HTML+CSS+JS模仿win10亮度调节效果
- ddr4 dqs 频率_DDR4各种技术参数详解
- 如何看电脑内存型号?
- pe如何格式化Linux硬盘,linux格式化硬盘
- Pr更新可否又是个传说?