6.可变参数问题-getopt函数

 1 #include <unistd.h>
 2 #include <stdio.h>
 3 int main(int argc, char * argv[])
 4 {
 5
 6     int ch;
 7     printf("\n\n");
 8     printf("the initial value of optind:%d, and opterr: %d\n",optind,opterr);   //2.用来记录下一个检索位置,3.是否将错误信息输出到stderr
 9     printf("--------------------------\n");
10
11     while ((ch = getopt(argc, argv, "ab:c:de::")) != -1)
12     {
13            printf("optind: %d\n", optind);
14            switch (ch)
15            {
16                case ‘a‘:
17                        printf("HAVE option: -a\n\n");
18                        break;
19                case ‘b‘:
20                        printf("HAVE option: -b\n");
21                        printf("The argument of -b is %s\n\n", optarg);          //1.用来保存选项的参数
22                        break;
23                case ‘c‘:
24                        printf("HAVE option: -c\n");
25                        printf("The argument of -c is %s\n\n", optarg);
26                        break;
27                case ‘d‘:
28                    printf("HAVE option: -d\n");
29                      break;
30               case ‘e‘:
31                     printf("HAVE option: -e\n");
32                     printf("The argument of -e is %s\n\n", optarg);
33                   break;
34               case ‘?‘:
35                        printf("Unknown option: %c\n",(char)optopt);             //4.不在字符串optstring中的选项
36                        break;
37            }
38     }
39
40
41 }
时间: 2024-11-05 13:46:33

6.可变参数问题-getopt函数的相关文章

编写一个可变参数的C函数——头文件stdarg.h中宏va_start ,va_arg和va_end的应用

我们在C语言编程中会遇到一些参数个数可变的函数,例如printf()这个函数,它的定义是这样的:int printf( const char* format, ...);它除了有一个参数format固定以外,后面跟的参数的个数和类型是可变的,例如我们可以有以下不同的调用方法:printf("%d",i);printf("%s",s);printf("the number is %d ,string is:%s", i, s);究竟如何写可变参数的

函数模板,函数模板重载,可变参数模板,函数模板覆盖,通过引用交换数据

 1.函数模板初级,如果想使用模板,需要实例化,实例化的方式是加上<数据类型> #include <iostream> //函数模板可以对类型进行优化重载,根据类型会覆盖 //如果仍然要使用模板函数,需要实例化 template<class T> T add(T a, T b) { std::cout << "T add " << std::endl; return a + b; } int add(int a, int

【C语言】浅谈可变参数与printf函数

一.何谓可变参数 int printf( const char* format, ...); 这是使用过C语言的人所再熟悉不过的printf函数原型,它的参数中就有固定参数format和可变参数(用"-"表示). 而我们又可以用各种方式来调用printf,如: printf( "%d ",value); printf( "%s ",str); printf( "the number is %d ,string is:%s ",

Lua function函数,可变参数, 局部函数,尾递归优化

在Lua中,函数是作为"第一类值"(First-Class Value),这表示函数可以存储在变量中,可以通过参数传递给其他函数,或者作为函数的返回值(类比C/C++中的函数指针),这种特性使Lua具有极大的灵活性. Lua对函数式编程提供了良好的支持,可以支持嵌套函数. 另外,Lua既可以调用Lua编写的函数,还可以调用C语言编写的函数(Lua所有的标准库都是C语言写的). 定义一个函数 function hello() print('hello') end hello函数不接收参数

Effective JavaScript Item 22 使用arguments来创建接受可变参数列表的函数

本系列作为Effective JavaScript的读书笔记. 在Item 21中,介绍了结合apply方法实现的可变参数列表函数average,它实际上只声明了一个数组作为参数,但是利用apply方法,实际上可以接受若干元素作为参数: function averageOfArray(a) { for (var i = 0, sum = 0, n = a.length; i < n; i++) { sum += a[i]; } return sum / n; } averageOfArray.a

python--关键字参数/可变参数--内置函数--时间模块--常用模块

---恢复内容开始---关键字参数/可变参数 知识点一.内置函数 def send_msm2(*args): #可变参数,参数组 print('phone',args)send_msm2()#返回值为元组 def send_msm2(*args): #可变参数,参数组 print('phone',args)send_msm2(110, 113, 333) #参数组不能用word= "haha "这样的形式,直接传def say(word,*args): print(word) prin

Scala可变参数方法或者函数传参问题

scala中可变参数传入数组需要在数组后面追加:_*,否则scala会将在数组整体视为一个参数. 例如代码: def echo(objs: Any*): Unit = { println(objs) } val strs = Array("1", "2") echo(strs: _*) echo(strs) 输出: WrappedArray(1, 2)WrappedArray([Ljava.lang.String;@4411d970) 原文地址:https://ww

C可变参数封装Log函数

#include <stdargs.h> #include <stdio.h> void LOGD(const char* fmt, ...) { va_list args; va_start(args, fmt); char str[256] = {'\0'}; vsprintf(str, fmt, args); va_end(args); printf("INFO: %s\n", str); } 原文地址:https://www.cnblogs.com/cr

C语言可变参数函数实现原理

一.可变参数函数实现原理 C函数调用的栈结构: 可变参数函数的实现与函数调用的栈结构密切相关,正常情况下C的函数参数入栈规则为__stdcall, 它是从右到左的,即函数中的最右边的参数最先入栈. 本文地址:http://www.cnblogs.com/archimedes/p/variable-parameter.html,转载请注明源地址. 例如,对于函数: void fun(int a, int b, int c) { int d; ... } 其栈结构为 0x1ffc-->d 0x200