如何从一个字符串中解析 N个命令来执行?"xxxcls"就执行cls,"xxxcls*********dir..."就执行cls,再执行dir等等的

cqpp 2006-08-23 10:29:53
rt
...全文
227 17 打赏 收藏 转发到动态 举报
写回复
用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
  • 打赏
  • 举报
回复
题目描述不清;
你总要给出你的字符串的具体格式,
比如,哪些是分隔符等;

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧