/* 因为嵌入式的需求 所以有自定义命令行的需求,方便设备调试 没有使用readline gnu库因为有点大不方便移植,所以照着shell.c 和 ftp main.c 对代码需要使用的部分,做了重写和简写,因为资料较少,所以方便以后使用和查阅,把可以用的代码框架放到csdn上,经过测试是可以使用的*/

#include <stdio.h>
#include <stdlib.h>
#include <string.h>char line[200];
int len;const char * get_line(char *buf)
{fprintf(stderr,"debug > ");fflush(stderr);return fgets(buf,200,stdin);
}const void exit_debug(char *line)
{if(!strcmp(line,"quit")  || !strcmp(line,"exit") || !strcmp(line,"qu")){printf("good day you know ... ...\n");exit(0);}
}typedef void (*func)(int argc,char **argv);void useage(int argc,char **argv) //argc 是从0 开始计数的
{char usage[] = " debug [ test]\n";printf("%s",usage);int i = 0;for ( i = 0 ; i < argc; i++){printf("%s\n",argv[i]);}
}typedef struct {char cmd_name[128];func cmd_func;
}CMD_LIST;CMD_LIST cmd_list[] = {{ "help",useage },
};#define LIST_SIZEOF sizeof(cmd_list)/sizeof(CMD_LIST)void xcmd(char *line,int *argc , char **argv)
{int count = 0;char * tmp;tmp  =  strtok(line," ");while( tmp != NULL ){sprintf(argv[count],"%s",tmp);tmp = strtok(NULL," ");count++;}*argc= count;
}void cmd(char *line){ // line 识别空格作为解析的作用,解析出命令的个数和不同的参数需求int i = 0;char tmp[20][20];int argc = 0;char *argv[20];exit_debug(line); //第一时间分辨是否需要退出命令行for( i = 0 ; i < 20 ; i++){ //可以做成初始化的模块儿,初始化二级指针,有点别名的味道argv[i] = tmp[i];}xcmd(line,&argc,argv);for( i = 0 ; i < LIST_SIZEOF ; i++) { //命令遍历模块儿if (!strcmp(argv[0],cmd_list[i].cmd_name)){cmd_list[i].cmd_func(argc,argv);}}
}static void cmd_check(int top)
{if(!top) putchar('\n');while(1){if(!get_line(line)){exit(0);}len = strlen(line);if (!len) break;if(line[--len] == '\n'){if(!len) break;line[len] = '\0';}else if ( len == sizeof(line) -2 ){printf("input too long\n");break;}cmd(line);}
}int main(void)
{int top = 0;printf("hello world"); //命令行的说明文档初始化使用while(1){cmd_check(top);top = 1;}
}

readline 库简写版本,测试可用相关推荐

  1. Python 谷歌翻译_浏览器版本 selenium (2022年1月测试可用)

    前言 另一种思路,使用selenium模拟浏览器操作谷歌翻译官网,获取显示翻译结果和之前的区别在于:翻译结果跟谷歌翻译官网应该一致这是一个简单的尝试,写完后,随便测试了几个单词可以用. 为什么要写这个 ...

  2. DS2431 修改网上版本 读写(已测试可用)

    延时部分感觉不是很合理,这里只是一个DEMO,不过测试可用 主要是修改了网上的例程而来,如有侵权问题请联系删除 #define CALC_TYPE_S 1 #define CALC_TYPE_MS 2 ...

  3. Python 调用谷歌翻译(2021年3月测试可用)

    前言 把之前的用来谷歌翻译的Python文件整理了下, 用来处理翻译下i18n.js所需要的字典, 直接调用即可.2021年3月测试可用 (¦3[▓▓] 2021年9月17日 测试失效 请查看: Py ...

  4. readline( )库的安装和使用,实现命令补全

    之前自己实现一个简单shell 的时候,想要实现命令行自动补全功能,于是上网查了查资料,发现多数都提到了 readline( ) 库,经过仔了解后,发现其实bash 的底层实现也是调用了这个库,我的系 ...

  5. 更改微信小程序的基础版本库;更改uni-app小程序基础库;更改用户的微信小程序基础库最低版本;设置用户的微信小程序版本库;

    需求场景:微信小程序不少API都有最低版本支持,为了避免不必要的麻烦,我们可以根据需要给小程序设置基础库最低版本,这样若用户使用的基础库版本低于设置的最低版本要求,则无法正常使用小程序,并提示更新微信 ...

  6. 浅析GDAL库C#版本支持中文路径问题(续)

    上篇博客中主要说了GDAL库C#版本中存在的问题,其表现形式主要是:"文件名中的汉字个数是偶数,完全没有影响,读取和创建都正常,如果文件名中的汉字个数是奇数,读取和创建都会报错." ...

  7. 了解MVP(最小可行产品) - 以及为什么我更喜欢最早的可测试/可用/可爱

    几年前,我画了这张照片并开始在关于敏捷和精益开发的各种演示中使用它: 从那时起,绘画已经病毒化!在文章和演示文稿中,甚至在一本书中都可以显示出来(Jeff Patton的" 用户故事映射 & ...

  8. 【花雕体验】08 行空板硬件控制pinpong库的系列测试(之一)

    行空板板身集成了光线传感器.麦克风.蜂鸣器.Wifi.蓝牙.加速度传感器.按键,正面配置有一块LCD彩屏,可实时呈现多种Python运行结果,包括文字.图片.视频,游戏画面,以及数据图表等. [花雕体 ...

  9. python多条件筛选数据-Python实现多条件筛选目标数据功能【测试可用】

    本文实例讲述了Python实现多条件筛选目标数据功能.分享给大家供大家参考,具体如下: python中提供了一些数据过滤功能,可以使用内建函数,也可以使用循环语句来判断,或者使用pandas库,当然在 ...

最新文章

  1. ZED~Windows
  2. This Gradle plugin requires Studio 3.0 minimum
  3. 【转】C++ 模板类的声明与实现分离问题
  4. ios 编译openssl支持arm64(转)
  5. html页面图片翻转特效代码,如何使用css实现翻转图片的效果(附代码)
  6. http://bassistance.de/jquery-plugins/
  7. Android 通过baidu借口 获得移动基站方法
  8. 数据分析--优化模型
  9. android抢qq红包源码,QQ抢红包插件实现,安卓源码,以及详细分析,androidqq抢红包源码,捡代码论坛整理...
  10. 更好的图片压缩途径: WebP探索之路
  11. .NET Framework v2.0 Obsolete APIs - 与大家分享
  12. Python+Selenium程序执行完,chrome浏览器自动关闭解决方案
  13. 服务器带宽上行与下行是什么意思,有什么区别
  14. torch中Tensor的使用
  15. effective java之 builder模式
  16. 聊一聊 InnoDB 引擎中的索引类型
  17. wince 系统定制
  18. nexus7二代升级android8,添横屏模式 Nexus7升级至Android4.1.2
  19. android 电话录音保存到什么位置,手机的录音文件在哪个文件夹?不同的安卓手机存放的路径你都知道吗?...
  20. 5GNR漫谈13:Zadoff –Chu(ZC)序列性质

热门文章

  1. 使用两个ThreadPool
  2. 订单倒计时取消,nodejs 辅助实现倒计时任务
  3. MySql数据库连接超时处理
  4. 使用镜像服务器加速你的Python PyPi
  5. centosx64 6.3安装视频组件
  6. [文档].艾米电子 - 二进制计数器及其变体,Verilog
  7. 服务器响应码302,ajax与302响应代码测试 详细出处参考:http://www.jb51.net/article/42327.htm...
  8. java 分配cpu使用率_Java-JVM-CPU使用率达到100%
  9. php v9 ajax 翻页,php ajax 无刷新翻页实现代码
  10. 滑动平均滤波_11种滤波算法程序大全(含源代码分享)