void read_class_information(head* beginning, int scale_type) {
puts(\"hello\");
// printf(\"hello\");
}
I have a simple function called by main
Because printf()
does not flush the output stream automatically. On the other hand puts()
adds a new line '\n'
at the end of the passed string. So it's working because the '\n'
flushes de stdout
.
Try
printf("hello\n");
Or, explicitly flush stdout
fflush(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.
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
:
setvbuf(stdout, (char *)NULL, _IONBF, 0);
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).