在图片数字输出中添加文字空格字符



经过大约几个小时的尝试和错误,我不知道该怎么做…以下是我正在处理的代码:

: format
    ( n ds -- )
    >r            cr .s
    dup              cr .s
    >r               cr .s
    abs              cr .s
    s>d              cr .s
    <# [char] bl hold #s r> sign #> cr .s
    r@               cr .s
    dup              cr .s
    c@               cr .s
    dup >r           cr .s
    chars +          cr .s
    char+            cr .s
    swap             cr .s 
    dup              cr .s
    >r               cr .s
    cmove            cr .s
    r> r> +          cr .s
    r>               cr .s
    c!
;

顺便说一句。。。不是有一种更简单的方法可以打印输出吗,类似于printf的东西会很棒。另一种可能性是将空格字符指定为s" "类型字符串的第一个字符。

编辑:

我发现我可以做到:Gforth中的s" 40 test"(尽管手册上说它不是标准的)。s" x20 test"可能是标准的,但我不太明白句子中说它是否标准的部分在哪里。尽管如此,我还是很高兴知道如何将其与图片数字输出相结合。

EDIT2

这就是我所期望的使用方式:

create test 256 allot
s" prefix " test place
123 test format
s" suffix" test place+
test count type  prefix 123 suffix

我认为对于这个例子,您不需要在<# #>中添加空格。可以使用s"定义带有前导空格或尾随空格的字符串。

所以如果你从开始

 Push addresses and lengths for the prefix and the number
s" prefix "                                      -- addr  u
123 s>d <# #s #>                          addr u -- addr u addr2 u2

你想要的单词是连接它们的东西,例如:

: concatenate
     Moves the string addr2 u2 to the end of the string addr u
    >r >r                        addr u addr2 u2 -- addr u
    dup >r over r> + r>                   addr u -- addr u addr+u addr2
    swap r@                               addr u -- addr u addr2 addr+u u2
    cmove r> + ;          addr u addr2 addr+u u2 -- addr u+u2

因此,如果您调用它并输出这样的结果字符串:

concatenate type

输出为"前缀123"

然后,您可以将相同的单词应用于字符串"前缀123"one_answers"后缀"。

这并没有使用与您的示例完全相同的内存位置,但它可以进行调整,这是我演示它的最简单方法


作为对评论的回应,您似乎非常接近于在图片输出中嵌入字符,我认为您只需要删除[char],例如

123 s>d <# # bl hold # bl hold # #>

应生成类似"1 2 3"的字符串

相关内容

  • 没有找到相关文章

最新更新