无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 3171|回复: 8
打印 上一主题 下一主题

[求助] Fn.10 这个内置函数怎么调用?

[复制链接]
跳转到指定楼层
1#
发表于 2013-6-8 16:16:18 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
请问Fn.10 这个函数怎么调用?
#define substring ((int (*)(const char *, const char *, int))((*(int **)0x8300)[10]))

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

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

拜托各位了!
2#
发表于 2013-6-8 17:33:20 | 只看该作者
这样吗?                 

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

Snap0.jpg

点评

这样是可以,但是如果写入内存的字符串超512字节,一个变量也就完不成了,情况也就变复杂了!能用函数直接操作可能会比较好!  详情 回复 发表于 2013-6-8 17:46
回复

使用道具 举报

3#
 楼主| 发表于 2013-6-8 17:46:44 | 只看该作者
zhaohj 发表于 2013-6-8 17:33
这样吗?

这样是可以,但是如果写入内存的字符串超512字节,一个变量也就完不成了,情况也就变复杂了!能用函数直接操作可能会比较好!
回复

使用道具 举报

4#
发表于 2013-6-9 08:18:48 | 只看该作者
本帖最后由 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

点评

谢谢chenall!随便问问那Fn.10这个函数是用来做什么的?  详情 回复 发表于 2013-6-9 18:05
回复

使用道具 举报

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

谢谢chenall!随便问问那Fn.10这个函数是用来做什么的?
回复

使用道具 举报

6#
发表于 2013-6-10 11:20:24 | 只看该作者
函数原型
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

点评

谢谢chenall解惑!  详情 回复 发表于 2013-6-12 23:38
回复

使用道具 举报

7#
发表于 2013-6-10 14:14:55 | 只看该作者
这个函数是否有问题啊?

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

Snap0.jpg

点评

而且用&&输出的是上一行命令的话返回值 不是之前命令的返回值 连用的话应该是用&; 不是&&  发表于 2013-6-10 15:17
你被我上面的函数搞晕了吧,,,GRUB4DOS命令行下的参数是使用空格分隔的,不是","  发表于 2013-6-10 14:43
回复

使用道具 举报

8#
发表于 2013-6-10 15:45:43 | 只看该作者
确实不能连用,使用空格分隔正确。
回复

使用道具 举报

9#
 楼主| 发表于 2013-6-12 23:38:46 | 只看该作者
chenall 发表于 2013-6-10 11:20
函数原型
int substring (const char *s1, const char *s2, int case_insensitive)
判断s1是否是s2的子串 ...

谢谢chenall解惑!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-9-22 18:12

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表