smi*_*545 6 if-statement esoteric-languages brainfuck
所以我正在研究一个读取文件然后再将其输出的程序,但是我无法让程序在文件末尾停止输入.我希望它停在特定的字符,如'0'或'$'或任何真正的因为一个字符NULL无法读入我的brainf解释器.这是迄今为止的代码:
>+[>,][<.]
Run Code Online (Sandbox Code Playgroud)
问题始于此,[>,]因为输入永远不会为NULL,此循环永远不会结束.
那么如何插入if语句,如果它到达预先指定的结束字符,它将终止此循环?
以下代码等同于您的代码,除非它在输入值为1(ASCII中不可打印)时停止.循环之间的<是因为最后一个值为0.
>+[+>,-]<[<.]
Run Code Online (Sandbox Code Playgroud)
它在输入后递减值,检查它是否为0,如果不是则循环回来.如果它循环回来,它必须再次递增指针以撤消减量.示例数组可能是:
00 02 H e l l o _ W o r l d 00
^
Run Code Online (Sandbox Code Playgroud)
但是,[<.]打印字符串的反面(后面是不可打印的1).可以通过将指针移动到开头并从那里向前移动来打印字符串本身,如以下代码所示:
>+[+>,-]<[<]>>[.>]
Run Code Online (Sandbox Code Playgroud)
在此代码中,[<]当它到达索引0时停止,>>移动到索引2(字符串开始),并[.>]输出字符,直到它到达结尾处的0.
如果要使用不同的ASCII字符,例如space(32),请在第一个循环内多次重复+和 - .(警告:如果输入中的任何字符小于32,则此代码将导致值低于0).
>+[++++++++++++++++++++++++++++++++>,--------------------------------]<[<]>>[.>]
Run Code Online (Sandbox Code Playgroud)