
一个C/C++ 命令行参数处理的程序
发布日期:2021-05-07 23:35:30
浏览次数:13
分类:原创文章
本文共 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 组合参数
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2025年03月25日 15时42分08秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
求二维数组中最大值的位置
2019-03-05
python中sort和sorted的区别
2019-03-05
防碰撞算法
2019-03-05
在vue中添加echarts
2019-03-05
vue中echart数据动态切换,一看就懂
2019-03-05
Python实现理解树,树的遍历,二分查找
2019-03-05
Python3.6爬虫记录
2019-03-05
搞清楚Spring Cloud架构原理的这4个点,轻松应对面试
2019-03-05
1月份2月份GitHub上最热门的23个Java开源项目
2019-03-05
maven安装
2019-03-05
2020第十五届全国大学生智能汽车竞赛——4X4矩阵键盘+Flash调参系统
2019-03-05
合并两个有序数组
2019-03-05
Ubuntu 环境下使用中文输入法
2019-03-05
小白学习Vue(?)--model选项的使用(自定义组件文本框双向绑定)
2019-03-05
聊聊我的五一小假期
2019-03-05
面向对象之异常处理:多路捕获
2019-03-05
Python简易五子棋
2019-03-05
MySQL8.0.19 JDBC下载与使用
2019-03-05
Windows安装MongoDB 4.2.8
2019-03-05
Vue新建项目——页面初始化
2019-03-05