The standard output is a stream device. All you can send to it is a series of bytes. What happens to those bytes after you send them to stdout depends on the execution context and is outside the control of your program. They could get sent to a graphical console for display, or to a file, or they could go to a printer to get printed onto paper and then immediately shredded.
In your particular case, your console is displaying the output on a fixed grid. That grid is determined by the console emulator based on the configured font. Maybe this can be configured or maybe it can't, it depends on how the emulator was programmed, but either way it's not something you can deal with from the code. And even if you configure your console to display the text exactly the way you want, if I take your program and run it on my computer the output will look entirely different (although the text will be the same).
If you need tighter control of the display then you need to write a graphical application, not a console application. The console is intended to quickly get information out, without regard for how it looks. With graphics you can display whatever you want, because you're sending pixels to the screen, not characters to a stream device. However, you'll also need to deal with all the complexity that drawing to the screen involves. Text rendering, most importantly.
Ok guys, thanks so much for replying! I'll consider developing a graphical application so I have more control about anything, I guess it's time to come back to my OpenGL game idea if we're already talking about it ;)