Linux c 开发 - 命令行参数和getopt方法的使用细节
来源:互联网 发布:制作手持身份证软件 编辑:程序博客网 时间:2024/06/08 09:04
命令行参数
在c语言的入口函数main方法中,可以添加两个参数:argc和argv。通过这两个参数,我们就可以在可执行文件执行的时候将自定义的参数传递到程序中。
看一个例子:
#include <stdio.h>#include <unistd.h>int main (int argc, char *argv[]){ printf("argc:%d\r\n", argc); printf("argv:%s argv1:%s argv2:%s argv3:%s\r\n\r\n", argv[0], argv[1], argv[2], argv[3]); return 0;}argc:这个参数主要告诉程序有多少个参数,每个参数在命令行上是通过空格分隔开的。
argv:用于存储命令行参数的字符指针数组。
执行结果:
[admin@localhost ~]$ ./main -p1024 -n10 -cargc:4argv:./main argv1:-p1024 argv2:-n10 argv3:-c
getopt方法
头文件:
#include<unistd.h>函数定义:
int getopt(int argc,char * const argv[ ],const char * optstring);
使用了getopt方法后,命令行参数就可以像这样使用短参数模式:./main -p1024 -n10 -c
optstring参数定义规则:
1. 如果使用-p1024或者-p 1024这样的短参数方式,则在optstring中需要定义:p:。p为短参数的名称。单个冒号为-p后面会带上参数,参数可以是有空格分隔,也可以不分隔。
2. 如果使用-n10这样的短参数方式,其中n和10之间没有空格,则optstring中需要带双冒号:n::
3. 如果使用-c这样的短参数方式,并且没有参数,则optstring中直接写这个字母就行了:c
变量:
char *optarg:参数值
int optind:argv的索引值,第几个参数。
具体看详细列子:
#include <stdio.h>#include <unistd.h>int main (int argc, char *argv[]){ printf("argc:%d\r\n", argc); printf("argv:%s argv1:%s argv2:%s argv3:%s\r\n\r\n", argv[0], argv[1], argv[2], argv[3]); int oc; char ec; //通过while循环获取 while((oc = getopt(argc, argv, "p:n::c")) != -1) { printf("optind:%d\r\n",optind); //参数索引值 printf("optarg:%s\r\n",optarg); //参数值 switch(oc) { case 'p': //参数p optarg为参数值,-p 1024或者-p1024使用 printf("Port:%s\n\n", optarg); break; case 'n': //参数n 需要-n10 这样使用 printf("Thread Num:%s\n\n", optarg); break; case 'c': //参数c,需要-c使用,不用带参数 printf("This is c\n\n"); break; case '?': //如果设置了未定义的参数,则返回这边的错误信息 ec = (char)optopt; printf("未定义的参数:%c\r\n", ec); break; case ':': //缺少选项 printf("缺少选项参数\r\n"); break; } } return 0;}运行命令行:
[admin@localhost ~]$ ./main -p1024 -n10 -c -aargc:5argv:./main argv1:-p1024 argv2:-n10 argv3:-coptind:2optarg:1024Port:1024optind:3optarg:10Thread Num:10optind:4optarg:(null)This is c./main: invalid option -- 'a'optind:5optarg:(null)未定义的参数:a
0 0
- Linux c 开发 - 命令行参数和getopt方法的使用细节
- linux开发 -- 命令行参数解析 getopt
- 格式化命令行参数getopt和getopts的使用
- linux获取命令行参数的函数getopt
- LINUX getopt处理命令行参数
- LINUX getopt处理命令行参数
- C/C++—— 分析命令行参数的getopt()函数使用介绍
- 使用getopt解析命令行参数
- 使用getopt解析命令行参数
- 用Getopt在Linux下获取命令行参数方法
- Linux解析命令行选项参数getopt和getopt_long
- 使用系统调用getopt简化对命令行参数的解析
- getopt 模块:命令行选项和参数的函数
- 编写获取命令行参数Getopt函数(C++)
- LINUX程序设计 -- 用getopt处理命令行参数
- linux getopt函数 分析命令行参数
- linux命令行参数解析函数 getopt
- Python:使用getopt模块处理命令行参数
- nosql图数据库的比较
- double my_atof(char *str)将一个数字字符串转换成这个字符串对应的数字(包括正浮点数、负浮点数)
- Swift调用OC之NSSet
- VIBE检测算法
- 黑马程序员 ----交通灯管理系统
- Linux c 开发 - 命令行参数和getopt方法的使用细节
- LXC(Linux Containers)简介
- 多线程(一):多线程问题产生原因
- 国外程序员整理的 C++ 资源大全
- NDK: jni/Android.mk:8: ../../sdk/native/jni/OpenCV.mk: No such file or directory make:
- 使用IntelliJ IDEA开发erlang项目
- 顺序表与链表的比较
- redhat6.3上安装oracle10g遇到的问题
- 第一篇