我可以将字符串打印到stdout,如下所示:
(%stderr) (w) file dup (a_string\n) writestring closefile
但我似乎无法做到
(a_string)
(%stderr) (w) file dup pop writestring closefile
或类似的东西。
请帮忙吗?
答案 0 :(得分:3)
首先,你写信给stderr。要写入stdout,请使用(%stdout)
作为特殊设备。
但是,如果您要写入stdout,只需使用=
或print
(如果您不想换行)。
要实际使用writestring
和closefile
,请先放置文件,然后dup
,然后将字符串放在堆栈上。
(%stderr) (w) file dup % f f
(string) % f f s
writestring % f
closefile %
如果字符串已经在堆栈中,你可以做一点点杂耍,以便按正确的顺序获取这些部分。
(string) % s
(%stderr)(w)file % s f
exch % f s
1 index % f s f
exch % f f s
writestring
closefile
exch 1 index exch
也可以写成dup 3 2 roll
。
此外,永远不需要关闭stdin,stdout或stderr。所以你可能会失去这一部分。
(%stderr)(w)file (string) writestring
答案 1 :(得分:0)
我相信你需要将你的pop更改为exch:
(a_string)
(%stderr) (w) file dup exch writestring closefile