原帖由 KG 于 2007-1-7 22:14 发表
这里的format是C语言里的变量格式,即“%d”“%c”“%f”等(本人只用过%d)
使用时要先把“%d”这两个字符做成一个对话,记下对话编号N
然后用“读取对话到字符串”把N号对话赋给字符串 STR Y
然后用sprintf(9, type,s, Y, x, -1, -1)这个命令把变量x的值以Y的格式做为字符串赋给字符串s
这是论坛里关于这个指令用法的最早记录,但也大大误导了以后如无色之类的一大批MOD制作者
经我测试,其实sprintf可以这样用
第一轮测试- ;Kdefnum=测试指令1
- 0 ; 0(0)::空语句(清屏)
- 50 5 0 0 0 0 0 0 ; 50(32):全部变量清零
- 50 8 0 26 1000 0 0 0 ; 50(32):读对话到字符串 Str[X1000]=talk(26)
- 50 9 0 1100 1000 1200 0 0 ; 50(32):Sprintf Str[X1100]=CStr(1200) FORMAT=Str[X1000]//这个是重点
- 50 33 0 1100 0 40 1797 0 ; 50(32):显示字符串 显示字符串1100 (0,40)Color1797
- 50 35 0 0 0 0 0 0 ; 50(32):读取键盘 [X0]=键值
- -1 ; -1(FFFF):事件结束
复制代码 talk[26]:我是%d,= =今天天气不错~
测试结果:
第二轮测试- ;Kdefnum=测试指令2
- 0 ; 0(0)::空语句(清屏)
- 50 5 0 0 0 0 0 0 ; 50(32):全部变量清零
- 50 8 0 26 1000 0 0 0 ; 50(32):读对话到字符串 Str[X1000]=talk(26)
- 50 8 0 27 1200 0 0 0 ; 50(32):读对话到字符串 Str[X1200]=talk(27)
- 50 9 1 1100 1000 1200 0 0 ; 50(32):Sprintf Str[X1100]=CStr([X1200]) FORMAT=Str[X1000]
- 50 33 0 1100 0 40 1797 0 ; 50(32):显示字符串 显示字符串1100 (0,40)Color1797
- 50 35 0 0 0 0 0 0 ; 50(32):读取键盘 [X0]=键值
- -1 ; -1(FFFF):事件结束
复制代码 talk26=我是%c,= =今天天气不错~
talk27=A
测试结果:
第三轮测试- ;Kdefnum=测试指令3
- 0 ; 0(0)::空语句(清屏)
- 50 5 0 0 0 0 0 0 ; 50(32):全部变量清零
- 50 8 0 26 1000 0 0 0 ; 50(32):读对话到字符串 Str[X1000]=talk(26)
- 50 9 0 1100 1000 1200 0 0 ; 50(32):Sprintf Str[X1100]=CStr(1200) FORMAT=Str[X1000]//这个是重点
- 50 33 0 1100 0 40 1797 0 ; 50(32):显示字符串 显示字符串1100 (0,40)Color1797
- 50 35 0 0 0 0 0 0 ; 50(32):读取键盘 [X0]=键值
- -1 ; -1(FFFF):事件结束
复制代码 talk26=我是%9d,= =今天天气不错~
测试结果:
总结:
sprintf是一个很可怕的指令,他几乎和C里的format一样,不需要单独将%d放在一个对话里
故最开始的那个引用里的某个人误导了我们将近三年。。。。
[ 本帖最后由 黄顺坤 于 2010-2-21 17:51 编辑 ] |