`
andrew913
  • 浏览: 188797 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

c语言中如何开发CLI

阅读更多
在一些底层的系统中,一定都是采用C作为开发语言,而且底层与UI进行交互,一般都会采用CLI来实现,CLI(Command Line Interface)也就是命令行接口。一定来说都是通过它来提供接口给UI或者一些高级用法。

熟悉PERL或者其他一些脚本的人都知道,CLI实现起来是非常简单,想PERL就是采用GEOPT来实现的。同样在C语言里面也是很简单的。

下面我来详细介绍下getopt_long的用户。

首先讲下它所涉及的数据结构:
他的结构定义都在getopt.h这个结构体中,下面这个option是一个非常重要的结构体,它用于存储命令的参数以及缩写。


struct option
{
   const char *name;
   /* has_arg can't be an enum because some compilers complain about
      type mismatches in all the code that assumes it is an int.  */
   int has_arg;
   int *flag;
   int val;
};



这个结构体是用于存储命令参数的,第一参数NAME就是我们参数的名字,第二个参数就是表示这个参数是否有参数值,最后一个val就是缩写。

我们来举个最简单的例子



struct option longopts[] = 
{	
 /*   { name 		has_arg 	*flag		val } 	*/
	{"login_user",    	1, 		0,		'U'},
	{"methodname",    0, 		0,		'M'},
}






这个例子就定义了两个参数,第一个login_user第二个位methodname,而他们的缩写分别为U,和M 而且他们都是参数值的。

同时我们还需要定义一个char的字符指针
例如上面的例子我们就需要这样定义 char *shortopts = "U:M";

这个指针指向了这些参数的缩写,如果它后面有冒号的话就表明它是带参数值的参数。反之则反。

上面我简述了下他的数据结构,下面它的一个重要函数出场了,它就是getopt_long



extern int getopt_long (int ___argc, char *const *___argv,
             const char *__shortopts,
                const struct option *__longopts, int *__longind)



他第一个参数就是参数的个数
也就是我们C语言中int main(int  argc,char ** argv) 这里的argc 第二个参数就是这里的**argv 一个指向指针的指针,存放着各种命令参数。
第三个就是我们定义的 shortopts 第四个是我们的longopts

它每执行一次获取一个参数,并且会返回参数名的缩写对于的值,下面我来举个简单的例子



while((c=getopt_long(argc,argv,shortopts,longopts,0))
		!=EOF)
	{
		switch(c)
		{
			case 'M':
                            这里就把我们输入的参数值获取过来。 
             	}
	}






这里我们需要将一下一个全局变量 *optarg,它指向我们存放的参数值。

在case中我们需要将我们输入的参数值获取过来。


这样一来我们就可以轻松完成我们的CLI。









2
1
分享到:
评论

相关推荐

    c语言查询DB2数据库开发+db2嵌入式c语言开发整理

    ### C语言查询DB2数据库开发知识点 #### 一、DB2数据库查询开发流程 1. **创建SQC文件** - 创建一个后缀名为 `.sqc` 的文件,并在此文件中编写 C 语言代码和 SQL 代码。 - 示例代码: ```c #include #include...

    微控制器 内部的终端(用于 mcu 的 cli)_C语言_代码_相关文件_下载

    微控制器的命令行界面 灵活的终端设置使您可以毫不费力地...程序存储器中所需的空间,最小工作配置约为 10 KB 安装 使用终端所需的一切,将所有源复制到共享文件夹: 更多详情、使用方法,请下载后阅读README.md文件

    cReddit:使用C语言编写的CLI Reddit客户端。哦,也是跨平台的!

    cReddit 使用C语言编写的CLI Reddit客户端。哦,也是跨平台的!如何建造当前所需的库是libcurl和libncursesw(libncurses的宽字符版本)。 该项目本身包括一个名为libreddit的库和一个名为creddit的程序。 要进行...

    wpa-cli 源码实现

    wpa_supplicant 提供了一个库,wpa_cli 就是通过调用这个库中的函数来实现其功能的。源码中的关键部分主要包括命令解析、事件处理和与 wpa_supplicant 的通信。 1. **命令解析**:wpa_cli 的主要任务之一是解析用户...

    linux/unix C语言开发的聊天程序 源码

    8. **编译和调试**:了解如何在Linux/Unix环境下使用gcc编译器编译和链接源代码,以及使用gdb进行调试,是开发过程中的必备技能。 通过对这些知识点的学习和实践,开发者不仅可以掌握聊天程序的实现,还能深入理解...

    csharp中调用c语言示例

    在C#中调用C语言代码,主要是通过.NET框架中的P/Invoke(Platform Invoke)技术实现的。P/Invoke允许托管代码(C#)调用非托管代码...在实际开发中,确保正确地处理各种边界情况和错误,以确保程序的稳定性和可靠性。

    wpa_supplicant-0.6.9 源码

    通过深入研究 `wpa_supplicant-0.6.9` 的源码,我们可以更好地理解无线网络安全的实现细节,同时也能提高在相关领域的问题诊断和开发能力。虽然版本较旧,但其基本原理和设计思路对于理解现代 Wi-Fi 安全仍然是至关...

    图书馆管理系统C语言

    虽然C语言本身并不支持图形用户界面(GUI),但可以通过标准输入输出(stdio)或命令行接口(CLI)为用户提供交互方式。更进一步,可以结合其他库,如ncurses,来创建简单的文本界面。 总结来说,“图书馆管理系统...

    C语言须知提问

    Visual C++ 2008是Microsoft发布的另一款集成开发环境,它支持C/C++/CLI等多种编程语言。与Visual C++ 6.0相比,Visual C++ 2008提供了更多现代特性支持。 #### 16. C语言的函数 函数是C语言程序的基本组成部分之一...

    Linux下基于C语言开发的俄罗斯方块游戏.zip

    在Linux操作系统中,使用C语言开发游戏是一种常见的实践,它能提供高效且灵活的编程环境。本项目"Linux下基于C语言开发的俄罗斯方块游戏"是一个很好的实例,展示了C语言在游戏编程中的应用。下面将详细介绍这个项目...

    cli.zip_cli开发

    在IT行业中,CLI(命令行接口)开发是构建软件工具和服务的一种常见方法,尤其是在系统级编程和网络通信中。本文将深入探讨Linux环境下的套接字网络编程,以实现客户端和服务器之间的通信。我们将主要关注"cli.c"这...

    words-counterc:C语言中的简单cli工具可计算给定文件路径下的单词频率

    glib是一个基础库,提供了许多通用的C语言编程工具,如数据结构、线程管理、内存管理等,对于开发CLI工具至关重要。在大多数Linux发行版中,可以使用包管理器(如apt-get或yum)轻松安装glib-2.0。 接下来,让我们...

    c语言版图书管理系统-c语言程序设计-期末大作业

    【C语言版图书管理系统】是基于C语言编程技术开发的一款应用程序,主要目的是为了学习和实践C语言的基础知识以及软件工程中的基本功能实现。这个系统涵盖了登录、查询、插入和删除等核心操作,对于初学者来说,是...

    c语言做的一个任务管理器.zip

    在IT领域,C语言是一种非常基础且强大的编程语言,它被广泛用于系统编程、软件开发、设备驱动编写等。这个“c语言做的一个任务管理器”项目,显然是使用C语言来实现的一个类似操作系统中的任务管理器功能的程序。...

    C语言写的2048

    4. **显示**:在CLI中,我们需要将当前的棋盘状态以人类可读的形式输出。这可能涉及打印数组元素,并使用特殊字符或颜色来区分不同的数字。 5. **结束条件**:游戏结束的判断标准是棋盘满且无法进行任何有效移动。...

    C语言电影院订票系统(源程序代码)

    6. **用户界面(CLI)**:作为命令行界面的应用,C语言订票系统可能会使用`scanf()`或`fgets()`等函数接收用户输入,并通过`printf()`输出信息。 7. **错误处理**:任何系统都应具备良好的错误处理机制,C语言通过`...

    c开发 c语言学生管理系统

    在IT行业中,C语言是一种基础且强大的编程语言,尤其适合于系统级编程和嵌入式系统。本项目“C开发 C语言学生管理系统”是利用C语言实现的一个实用系统,旨在帮助用户管理和处理学生数据。下面将详细介绍这个系统的...

    uni_module_in_c:C语言中的简单CLI应用程序,用于学生跟踪和考试

    在C语言中开发这样一个系统,可以锻炼程序员对数据结构、文件操作和命令行交互的理解。它可能包括以下功能: 1. **数据结构**:程序可能会使用数组、链表或结构体来存储学生信息,如姓名、学号、年龄和成绩。结构体...

    通讯录管理程序(C语言版)附说明书

    在通讯录程序中,用户可能会通过命令行界面(CLI)输入各种指令,如添加新联系人、删除联系人或搜索特定联系人。 4. 字符串处理: 在处理联系人信息时,字符串操作至关重要。C语言中的字符串是字符数组,可以使用...

    C语言的银行管理系统

    在信息技术领域,C语言因其高效、灵活和强大的底层控制能力,常被用于开发各种系统软件,包括银行管理系统。本文将深入探讨基于C语言的银行管理系统的实现及其核心知识点。 首先,银行管理系统是用于处理银行日常...

Global site tag (gtag.js) - Google Analytics