void read_class_information(head* beginning, int scale_type) {
puts("hello");
// printf("hello");
}
I have a simple function called by main and printf() and fprintf() to stdout does not seen to work within it. On the other hand, puts() works fine. I have no files open at the time of the printf() call or any errors. Any suggestions to what the problem might be? Thanks.
By default, stream buffering is set to line buffered, which means nothing is really sent to the stream until a new line character
\n
is found. The three buffering methods are:_IONBF
: unbuffered_IOLBF
: line buffered_IOFBF
: full bufferedYou can change the buffering method for any stream. In this case, you may want to change the buffering method for
stdout
:In this way, you don't need to
fflush(stdout);
everytime you want to print something without a newline. This has some performance issues which may or not affect to you, so you decide which is better for you.As usual, you have access to the documentation executing
man setvbuf
(if you have the docs installed, of course).Because
printf()
does not flush the output stream automatically. On the other handputs()
adds a new line'\n'
at the end of the passed string. So it's working because the'\n'
flushes destdout
.Try
Or, explicitly flush
stdout
right after the
printf()
statement.Try using the new line character (
'\n'
) at the end of your statement, also make sure you have the appropriate headers.