dos屏幕字符串查找算法(tc)

piziliu2003 2004-04-12 04:21:46
現在在用tc 2.0做一個dos程序(抓屏幕的字符串並能判斷屏幕中是否存在給定字符串).如 執行screen.exe find.dat (find.dat存放要查找的字符串)就可檢測屏幕上是否存在此字符串.
遇到一算法問題求教個位!!!!!啦.
通過軟中斷 int86(0x10,&r,&r)我實現了將整個DOS屏幕字符生成在一個unsinged char xx[50][80]數組裡面了.find.dat裡面字符串生成在unsinged char yy[40]
然後我再用甚麼算法來實現判斷.xx[50][80]是否含有yy[40]呢??我想不出來.(求源碼)
對了如果個位對於編screen.exe 的思路有其他見解也可提供參考!謝謝了.
...全文
171 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
piziliu2003 2004-04-21
  • 打赏
  • 举报
回复
還是多謝個位了!!!問題基本解決.
syuui 2004-04-17
  • 打赏
  • 举报
回复
how about strstr()
lw549 2004-04-17
  • 打赏
  • 举报
回复
strcmp()
不可以吗?
antijpn 2004-04-17
  • 打赏
  • 举报
回复
一时手误again,上面的“一是”改成“一时”

嗯,这下没有手误了,汗……
antijpn 2004-04-17
  • 打赏
  • 举报
回复
一是手误上面的“没有str开头的函数都要求字符串以'\0'结束。”改成
“每个str开头的函数都要求字符串以'\0'结束。”
antijpn 2004-04-17
  • 打赏
  • 举报
回复
不行的原因是因为没有str开头的函数都要求字符串以'\0'结束。

50/80的一个数组主要是怕换了行以后会有字符重复,正好可以和上一行最后的内容构成所需要的字符串。

这个要联合strlen和memcpy两个函数来解决。
看看这个行不行
int ival=strlen(src);
if(y+ival<81)
if(memcmp(&buf[x][y],src,ival))
dosomething();

piziliu2003 2004-04-17
  • 打赏
  • 举报
回复
RE: cycxp4363(想飞的感觉) ( )原則上是可以的 但這樣做算法不覺得像排列組合太龐大了
難以想像.對把.
piziliu2003 2004-04-17
  • 打赏
  • 举报
回复
Re: Wolf0403(完美废人)(CSDN CBF) 我說的是數據結構 c語言.以隊或樹的形式做.
還有千萬不能當成char[4000].請看清我的題議.我是比對dos屏幕中是否存在一字符串.
簡單的說
假如 一文件 screen.dat內容為
[EEUPDATE ver 3.37] - Intel PCI NIC EEPROM Utility
Copyright (C) 1995 - 2000 Intel Corporation

NIC Bus Dev Vendor-Device Network Address PWA Number Size Checksum
=== === === ============= ================= ============ ==== ========
0 0 08 0030-1031 00301375D4D5 000000-000 64 B084
0 2 08 8086-1031 003013345678 000000-000 64 B084
我要比較文件中是否存在0000301375D4D5這個字符串.
麻煩各位高手提供其算法源代碼.謝謝.



piziliu2003 2004-04-17
  • 打赏
  • 举报
回复
那就請個位大蝦試試 strcmp()& strstr()
我早想過!但好像不行
cycxp4363 2004-04-16
  • 打赏
  • 举报
回复
可不可以这样,先从xx【50】【80】中xx【0】【0】开始依次取40个字符到dd【40】中出来与yy【40】比较,如果不相等,又从xx【0】【1】开始取依次找呢
Wolf0403 2004-04-16
  • 打赏
  • 举报
回复
“數據結構指針”是什么东西。。。。
字符串匹配而已。。。
我记得一个 char[50][80] 是可以当作 char[4000] 来用的
piziliu2003 2004-04-16
  • 打赏
  • 举报
回复
why no one response my question????
仔細想想這個問題其實算法很麻煩的啦!!
用數據結構指針可能會簡單點!大家認為呢?
piziliu2003 2004-04-12
  • 打赏
  • 举报
回复
现在在用tc 2.0做一个dos程序(抓屏幕的字符串并能判断屏幕中是否存在给定字符串).如 执行screen.exe find.dat (find.dat存放要查找的字符串)就可检测屏幕上是否存在此字符串.
遇到一算法问题求教个位!!!!!啦.
通过软中断 int86(0x10,&r,&r)我实现了将整个DOS屏幕字符生成在一个unsinged char xx[50][80]数组里面了.find.dat里面字符串生成在unsinged char yy[40]
然后我再用甚么算法来实现判断.xx[50][80]是否含有yy[40]呢??我想不出来.(求源码)
对了如果个位对于编screen.exe 的思路有其他见解也可提供参考!谢谢了.

69,369

社区成员

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

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