The base I/O model of brainfuck is really simple. You read bytes and you write bytes, but there is no way to put them back if you did not read what you expected to.
Once a dynamic memory allocator (#25) is implemented and we have a dynamically sized array (#13), we should consider adding a member variable to stdin and stdout to act as a buffer for reads/writes.
[ ] stdin should be able to unread bytes from the input stream and place them back on its buffer
[ ] stdout should have multiple buffer modes for line buffering, no buffering, etc.
The base I/O model of brainfuck is really simple. You read bytes and you write bytes, but there is no way to put them back if you did not read what you expected to.
Once a dynamic memory allocator (#25) is implemented and we have a dynamically sized array (#13), we should consider adding a member variable to stdin and stdout to act as a buffer for reads/writes.