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函数参数规范相关推荐

  1. Linux中 C++ main函数参数argc和argv含义及用法

    Linux中 C++ main函数参数argc和argv含义及用法 简介 argc 是 argument count的缩写,表示传入main函数的参数个数: argv 是 argument vecto ...

  2. 【C】关于main()函数参数的问题;

    main()函数参数的一般形式: int main(int argc, char *argv[]) int argc用来表示参数的数量,argv[]数组是用来存放参数的值: 但是在linux下的gcc ...

  3. C语言 main 函数参数 main(int argc, char *argv[]) - C语言零基础入门教程

    目录 一.main 函数写法 二.main 函数参数简介 三.使用 main 函数参数 1.打印 main 函数参数 a.直接运行 exe 文件 b.打开 cmd 命令行窗口执行 exe 文件 c.打 ...

  4. Main函数参数argc,argv说明

    C/C++语言中的main函数,经常带有参数argc,argv,如下: int main(int argc, char** argv) int main(int argc, char* argv[]) ...

  5. main函数参数解析

    int argc,char *argv agrc表示参数的个数 argv储存参数 这个函数的意思是逐一输出参数 实际上,main函数也可以带参数.带参数main函数的定义格式如下: void main ...

  6. C语言main函数参数详解

    main函数参数 一共有三个: 1.int argc 整型变量 2.char *argv[] 字符指针的数组,通俗一点就是字符串数组,每个元素都是字符串 3.char *envp[] 字符串数组 这三 ...

  7. C语言中main函数参数使用

    在C99标准中定义main函数两种正确的写法 int main(void); int main(int argc, char* argv[]); 常见的不标准写法 void main() main() ...

  8. 【C语言】字符串(main函数参数)

    文章目录 字符串 字符数组 字符串定义 字符串输入输出scanf&printf 字符串数组 main函数参数 字符串 字符数组 #include <stdio.h>int main ...

  9. C++:Main函数参数列表及参数类型转换

    有三个问题待解决: 1.C/C++ main函数参数意义 2.怎么向main函数传参 3.传进来的参数类型是什么?怎么类型转换? 下面来分别分析! 首先,看代码,然后分析. int main(int ...

最新文章

  1. 图解Java中那18 把锁
  2. AI解梦成为现实 未来还有无限可能
  3. 【图像处理】【计算机视觉】线性邻域滤波专场:方框滤波、均值滤波与高斯滤波...
  4. 新玩法,CentOS7中LVM通过扩展逻辑卷扩展swap空间
  5. 高并发下防止库存超卖解决方案
  6. Windows管道技术
  7. python filter过滤器的使用_Python filter过滤器原理及实例应用
  8. Fedora 17配置ssh及Windows远程连接
  9. win10无法安装.net framework 3.5 解决方案/无法安装NetFx3解决方案
  10. Xpath--使用Xpath爬取糗事百科成人版图片
  11. [不限速百度云]两款百度网盘破解版分享
  12. 怎么让电脑微信安装到别的盘路径
  13. ObjectARX_AutoCAD创建矩形功能实现
  14. Windows的hosts文件在哪里?
  15. android 远程代码,Android 远程连接数据库。。。。。(示例代码)
  16. html的window效果,HTML+CSS+JS模仿win10亮度调节效果
  17. ddr4 dqs 频率_DDR4各种技术参数详解
  18. 如何看电脑内存型号?
  19. pe如何格式化Linux硬盘,linux格式化硬盘
  20. Pr更新可否又是个传说?

热门文章

  1. fastadmin使用某个语言包
  2. 世界最牛的20家网站(转载)
  3. scrapy python3教程_python3安装scrapy教程_安装Scrapy教程
  4. socket的延续以及UDP网络通讯
  5. [LaTeX] 同时调整文字的背景颜色和文字颜色 (像MarkDown语法一样高亮显示代码)(附完整代码)
  6. 响应式布局与Bootstrap框架
  7. I/O流(1) 利用 FileWriter() 方法把数据从内存写出到磁盘中
  8. UML之程序流程图画法
  9. 基金带etf和不带有什么区别?
  10. php 各版本下载地址