Most probable cause is hinted by Bruce above.
The output of printf() is usually not flushed to the console until it encounters a newline character.
The usual way of making sure each character is displayed here at each iteration would be to add a "fflush(stdout);" after the printf() call.
Edit: I focused on the printf() part (assuming this would be the culprit) and didn't even look at the rest... but obviously your use of the array was completely bogus. People below pointed you to what would be correct for your needs (which weren't even clear to begin with until you specified what the array really contained and what you wanted printed out.)
Still, you can keep in mind what I said above for later. Although it's implementation-defined, on most consoles, a printf() will not display anything until a "newline" (or end-of-file, I think, which is CTRL-Z?) character is encountered. So to print character by character, you'd need a fflush() call as I suggested. I don't remember if putc() suffers from the same behavior.