博客
关于我
一个C/C++ 命令行参数处理的程序
阅读量:360 次
发布时间:2019-03-04

本文共 1280 字,大约阅读时间需要 4 分钟。

最近在学习K&R C中讲解的关于UNIX系统下运行命令的参数的讲解,其中可选参数  -x  -n  可以被-xn取代。

这种处理方法的代码非常精练,这里记录下来以后用得上


代码如下  这是一个查找输入的行中是否含有匹配字符串的命令 并且有 -x -n两个可选参数。

vs2015和gcc下编译通过

#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>#include <string.h>#define MAXLINE		1000int getline_s(char *line, int max);/* print the line match the pattern with * the first input parameter. * support the optional parameter -x -n or -xn * before the pattern */int main(int argc, char* argv[]){	char line[MAXLINE];	long lineno = 0;	int c, except = 0, number = 0, found = 0;	while (--argc > 0 && (*++argv)[0] == '-')	{		while (c = *++argv[0])		{			switch (c)			{			case 'x':				except = 1;				break;			case 'n':				number = 1;				break;			default:				printf("find: illegal optional %c\n", c);				argc = 0;				found = -1;				break;			}		}	}	if (argc != 1)		printf("Usage: find -x -n pattern\n");	else	{		while (getline_s(line, MAXLINE) > 0)		{			lineno++;			if ((strstr(line, *argv) != NULL) != except)			{				if (number)					printf("%ld:", lineno);				printf("%s", line);				found++;			}		}	}	return found;}int getline_s(char *s, int max){	int c;	char *p = s;	while ((c = getchar()) != EOF && c != '\n')		*s++ = c;	if (c == '\n')		*s++ = c;	*s = '\0';	return s - p;}


编译好以后 输入

./a.out -x -n test          可选参数


./a.out  test     忽略参数


./a.out -xn   组合参数


转载地址:http://yabg.baihongyu.com/

你可能感兴趣的文章
Linux基础命令(十四)软件安装的后续
查看>>
HTML基础,块级元素/行内元素/行内块元素辨析【2分钟掌握】
查看>>
keil左侧文件调整方法
查看>>
本地分支关联远程分支
查看>>
STM8 GPIO模式
查看>>
python多态和封装
查看>>
STM32boot启动
查看>>
回调函数(callback function)
查看>>
omnet++
查看>>
23种设计模式一:单例模式
查看>>
Qt中的析构函数
查看>>
CSharp中委托(一)委托、匿名函数、lambda表达式、多播委托、窗体传值、泛型委托
查看>>
二叉堆的c++模板类实现
查看>>
C语言实现dijkstra(adjacence matrix)
查看>>
SQL Server SQL语句调优技巧
查看>>
用C#实现封装-徐新帅-专题视频课程
查看>>
C语言学习从初级到精通的疯狂实战教程-徐新帅-专题视频课程
查看>>
三层框架+sql server数据库 实战教学-徐新帅-专题视频课程
查看>>
NAT工作原理
查看>>
Processes, threads and goroutines
查看>>