brainfuckesoteric-languages

How do you use the comma command in Brainfuck?


I've been experimenting with the BF esolang today, as I graduated from hello world to an addition program, (which requires the data take in command), I could not for the life of me figure out how this command works. At first I thought you would use the period command for data out, and then the next time you call the comma, it takes in that data. After looking at some interpreters in java, it looked like it took data from the next byte, but this didn't seem to work.

Basically every source, including the main wiki page, has the same rudimentary explanation, stating that this command "takes in" a byte of data and stores it at the pointer. I'm not sure where this data comes from, every tutorial that I found also gives the same explanation.

I tried:

++++++++++[>++++++<-]>+++++. generates A at pointer 1 <, goes to pointer 0 and *should* take in A

This still didn't work. This is probably a dumb question, but this is my last resort for understanding this.


Solution

  • The period prints the value at the pointer to an output stream.

    The comma accepts a byte from an input stream and stores that value at the memory being pointed at.

    The output stream could be printing to the terminal, the input stream could be data entered at the terminal from a keyboard.

    The period is equivalent to the C code: putchar(*ptr), whereas the comma is equivalent to: *ptr = getchar().