社区
C语言
帖子详情
如何从一个字符串中解析 N个命令来执行?"xxxcls"就执行cls,"xxxcls*********dir..."就执行cls,再执行dir等等的
cqpp
2006-08-23 10:29:53
rt
...全文
239
17
打赏
收藏
如何从一个字符串中解析 N个命令来执行?"xxxcls"就执行cls,"xxxcls*********dir..."就执行cls,再执行dir等等的
rt
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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
打赏
举报
回复
题目描述不清;
你总要给出你的字符串的具体格式,
比如,哪些是分隔符等;
The C Programming Language 第二版 英文版
- **7.8.3 ungetc**:讲解如何回退
一个
字符到输入流。 - **7.8.4
命令
执行
**:说明如何在程序
中
执行
外部
命令
。 - **7.8.5 存储管理**:介绍内存分配和释放的相关函数。 - **7.8.6 数学函数**:列举常用的数学...
获得当前应用程序
执行
时所在的目录
2. **分配缓冲区**:由于`GetModuleFileNameA`会将文件路径写入到我们提供的缓冲区,所以我们需要预先分配
一个
足够大的
字符串
变量来存放路径,比如: ```powerbuilder String szFilePath[256] // 假设路径最长255个...
C#基类整理
4. **DotNet基础类大全**:.NET Framework是微软提供的
一个
平台,包含了大量的类库,如System.Collections、System.IO、System.Text等,这些类库提供了对基本数据类型的操作、集合管理、文件I/O、
字符串
操作等功能。...
将数字转换成文本的程序
虽然没有提供具体的frmTesten.Frm和Testen.Vbp文件内容,但我们可以推测这两个文件可能是Visual Basic .NET项目的一部分,VB.NET提供了强大的
字符串
操作功能,下面是
一个
简化的C#代码示例: ```csharp using System...
hibernate3.3.1的jar包
- **Session**:与数据库交互的接口,
执行
CRUD操作,是线程不安全的,每个数据库操作应创建
一个
新的Session实例。 - **Transaction**:处理事务,确保数据的一致性。 3. **Hibernate配置** Hibernate 3.3.1版本...
C语言
70,026
社区成员
243,244
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章