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

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

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

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

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

vs2015和gcc下编译通过

#define _CRT_SECURE_NO_WARNINGS#include 
#include
#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/

你可能感兴趣的文章
Mysql学习总结(84)—— Mysql的主从复制延迟问题总结
查看>>
mysql安装卡在最后一步解决方案(附带万能安装方案)
查看>>
mysql安装和启动命令小结
查看>>
MySQL安装配置教程(非常详细),从零基础入门到精通,看完这一篇就够了
查看>>
mysql安装配置简介
查看>>
MySQL定义和变量赋值
查看>>
mysql实战01|基础架构:一条SQL查询语句是如何执行的?
查看>>
Mysql实战之数据备份
查看>>
mysql实现成绩排名
查看>>
Mysql客户端中文乱码问题解决
查看>>
mysql客户端工具使用
查看>>
MySQL密码忘记,怎么办?
查看>>
mysql导入数据库出现:Incorrect string value: '\xE7\x82\xB9\xE9\x92\x9F' for column 'chinese' at row 1...
查看>>
mysql导入(ibd文件)
查看>>
Mysql工作笔记006---Mysql服务器磁盘爆满了_java.sql.SQLException: Error writing file ‘tmp/MYfXO41p‘
查看>>
mysql常用命令
查看>>
MySQL底层概述—2.InnoDB磁盘结构
查看>>
MySQL底层概述—5.InnoDB参数优化
查看>>
MySQL底层概述—6.索引原理
查看>>
MySQL底层概述—7.优化原则及慢查询
查看>>