博客
关于我
一个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 索引连环问题,你能答对几个?
查看>>
Mysql 索引问题集锦
查看>>
Mysql 纵表转换为横表
查看>>
mysql 编译安装 window篇
查看>>
mysql 网络目录_联机目录数据库
查看>>
MySQL 聚簇索引&&二级索引&&辅助索引
查看>>
Mysql 脏页 脏读 脏数据
查看>>
mysql 自增id和UUID做主键性能分析,及最优方案
查看>>
Mysql 自定义函数
查看>>
mysql 行转列 列转行
查看>>
Mysql 表分区
查看>>
mysql 表的操作
查看>>
mysql 视图,视图更新删除
查看>>
MySQL 触发器
查看>>
mysql 让所有IP访问数据库
查看>>
mysql 记录的增删改查
查看>>
MySQL 设置数据库的隔离级别
查看>>
MySQL 证明为什么用limit时,offset很大会影响性能
查看>>
Mysql 语句操作索引SQL语句
查看>>
MySQL 误操作后数据恢复(update,delete忘加where条件)
查看>>