社区
C语言
帖子详情
如何从一个字符串中解析 N个命令来执行?"xxxcls"就执行cls,"xxxcls*********dir..."就执行cls,再执行dir等等的
cqpp
2006-08-23 10:29:53
rt
...全文
263
17
打赏
收藏
如何从一个字符串中解析 N个命令来执行?"xxxcls"就执行cls,"xxxcls*********dir..."就执行cls,再执行dir等等的
rt
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
cqpp
2006-08-26
打赏
举报
回复
没有好点的办法了吗?
tailzhou
2006-08-23
打赏
举报
回复
算法的复杂度应该是 o(n*m); n是你的流的长度;m是你的命令表元素的个数;
tailzhou
2006-08-23
打赏
举报
回复
那是命令解析的处理的问题了。跟是不是流以及用不用缓冲区都没什么关系;
也可以考虑用kmp;
struct instruct
{
int len; //指令的长度
char word[50]; //指令
int kmp[50]; //指令的kmp值
int idx; //模式中的当前位置;
}
struct instruction instructions[100]; 你的指令表;
int c;
while ((c=yougetchar())!=EOF)
{
for (i=0;i<100;++i)
{
//c跟instructions[i].word[idx]比较,依据结果更新idx;
//当idx==len时,找到指令,重新设置instructions数组各元素的idx
}
}
具体实现参见kmp算法;
cqpp
2006-08-23
打赏
举报
回复
你怎么从缓冲区识别命令?挨个命令使用strstr?
tailzhou
2006-08-23
打赏
举报
回复
为什么一定要从流里识别数据??
先保存到缓冲区,边处理边读,不更方便么?
cqpp
2006-08-23
打赏
举报
回复
关键是如何从流中识别出命令?要考虑效率
cqpp
2006-08-23
打赏
举报
回复
我准备做成一张精心准备的命令表(按字典一样排好顺序),然后对单个字符来了做成状态机处理.看看如何?
tailzhou
2006-08-23
打赏
举报
回复
缓冲区具体要多大,
以及什么时候再从流继续读取,
取决于你的具体的查找算法.
tailzhou
2006-08-23
打赏
举报
回复
你可以用一个字符数组来做缓冲呀;
比如你的命令的最长的是10个字符;
那么你就建立一个20长度的字符数组,
流(从串口来的)的信息先到你的数组做缓冲,
数组里的数据处理掉n个(10个以上)的字符后,移动未处理的字符到数组的开头,然后在读取n个字符到数组的末尾;
cqpp
2006-08-23
打赏
举报
回复
当然 ,命令表我是有,不然怎么执行命令呢?
cqpp
2006-08-23
打赏
举报
回复
上面的几种都考虑过!关键我的数据来源是一个流一样的(从串口来的)。不可能每收到一个字符就去做一遍查找!
robin_yao
2006-08-23
打赏
举报
回复
总要给出所有的 命令字符 汇总表 吧
否则怎么判断哪些是 命令?
chenhu_doc
2006-08-23
打赏
举报
回复
把所有的命令一字符串的形式放在一个字符串数组中。
然后对给定的字符串中做匹配!
每得到一个匹配就; system("matched order");
1。考虑KMP算法匹配!
2。c中的string函数:strstr,得到匹配的位置,然后通过position排序!根据排序后的字符串数组来依次执行system命令!
3。 如果追求效率,那么可以用索引来对即定的命令做初始化!
tailzhou
2006-08-23
打赏
举报
回复
cls dir是你自己的自定义函数??
如果你有自定义的函数xcls,那不是要执行xcls了??
cqpp
2006-08-23
打赏
举报
回复
没有分隔符,找到就执行!而且是自己的程序中实现
wlfc
2006-08-23
打赏
举报
回复
这个软件可以完成这个功能:通用字符串表达式编译运行库FORCAL
网址:http://www4.skycn.com/soft/23045.html
tailzhou
2006-08-23
打赏
举报
回复
题目描述不清;
你总要给出你的字符串的具体格式,
比如,哪些是分隔符等;
DotNet 资源大全
中
文版(Awesome最新版)
DotNet 资源大全
中
文版(Awesome最新版) 原文:DotNet 资源大全
中
文版(Awesome最新版)Awesome系列的.Net资源整理。awesome-dotnet是由quozd发起和维护。内容包括:编译器、压缩、应用框架、应用模板、加密、数据库、反编译、IDE、日志、风格指南等。 算法与数据结构(Algorithms and ...
激光焊接机_1.rar
激光焊接机_1.rar
C语言
70,039
社区成员
243,245
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章