clark@umn-cs.CS.UMN.EDU (Robert P. Clark) (05/10/89)
in article 19474 bvickers writes:
: I've come across a very strange problem in one of my programs. I'll
: list the function that's causing the problems and then discuss what
: those problems are.
:
: Globals: struct msg_node *first_msg, *last_msg;
:
: void output_msgs()
: {
... deleted
: printf("%s\n",current->string);
: printf("&");
... deleted
: }
:
: Now, this function is supposed to output all the messages that are on
: the linked list from first to last. But something strange happens.
: After the function has output its last message, it fails to continue
: on to the next line (printf("&")). The ampersand isn't output until
: the next call to output_msgs().
:
: Why is this happening? All help appreciated.
:
I believe that the program is working correctly, there really is
no problem. The "&" is not printed until later, because output is
buffered. Printing a "\n" - as in printf("%s\n",current->string);
flushes the output buffer. The next call to printf("&"); is
executed, but the buffer is not flushed until later. You can
force the "&" to be printed by manually flushing the output buffer
with a call to fflush(stdout);
Bob Clark clark@umn-cs.cs.umn.edu