无忧启动论坛

标题: Fn.10 这个内置函数怎么调用? [打印本页]

作者: zbkh    时间: 2013-6-8 16:16
标题: Fn.10 这个内置函数怎么调用?
请问Fn.10 这个函数怎么调用?
#define substring ((int (*)(const char *, const char *, int))((*(int **)0x8300)[10]))

其实我是想实现这样一个目的:
比如:

write (md)0x20000+4 abcdefg1**\0
想截取这段内存任意一段字符串,比如像截取123这段字符串,
想用Fn.10 这个函数来实现,但试了好多次,一直没有成功,最后想无可想了,就只有发帖了!

拜托各位了!
作者: zhaohj    时间: 2013-6-8 17:33
这样吗?                 

Snap0.jpg (12.32 KB, 下载次数: 19)

Snap0.jpg

作者: zbkh    时间: 2013-6-8 17:46
zhaohj 发表于 2013-6-8 17:33
这样吗?

这样是可以,但是如果写入内存的字符串超512字节,一个变量也就完不成了,情况也就变复杂了!能用函数直接操作可能会比较好!
作者: chenall    时间: 2013-6-9 08:18
本帖最后由 chenall 于 2013-6-9 08:20 编辑

这个函数不是用来截取字符串的,
要截取的话直接用最简单的printf函数就行了.
如下就可以截取到 0x600000地址处的前512个字符(或者\0之前的字符)
call Fn.0 0 "%.*s"  512 0x600000

call Fn.0 0 "%.512s"  0x600000
当然也可以截取字符存放到其它地址
call Fn.0 0x40000 "%.4s" 0x600000

作者: zbkh    时间: 2013-6-9 18:05
chenall 发表于 2013-6-9 08:18
这个函数不是用来截取字符串的,
要截取的话直接用最简单的printf函数就行了.
如下就可以截取到 0x600000地 ...

谢谢chenall!随便问问那Fn.10这个函数是用来做什么的?
作者: chenall    时间: 2013-6-10 11:20
函数原型
int substring (const char *s1, const char *s2, int case_insensitive)
判断s1是否是s2的子串(判断s1和s2的前面部份是否一样),case_insensitive是否区分大小写
例: 以下返回值<0.说明是子串
substring("abcd","abcdef",0)
以下返回值>0,s1不是s2的子串
substring("abcd","ab",0)
如果两个字符串一样返回0
作者: zhaohj    时间: 2013-6-10 14:14
这个函数是否有问题啊?

Snap0.jpg (51.53 KB, 下载次数: 21)

Snap0.jpg

作者: zhaohj    时间: 2013-6-10 15:45
确实不能连用,使用空格分隔正确。
作者: zbkh    时间: 2013-6-12 23:38
chenall 发表于 2013-6-10 11:20
函数原型
int substring (const char *s1, const char *s2, int case_insensitive)
判断s1是否是s2的子串 ...

谢谢chenall解惑!




欢迎光临 无忧启动论坛 (http://wuyou.net./) Powered by Discuz! X3.3