Strange C Problem

Brett J. Vickers bvickers at bonnie.ics.uci.edu
Wed May 10 07:58:06 AEST 1989


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()
{
  struct msg_node {
    char string[160];
    struct msg_node *next;
    struct msg_node *prev;
  } *current, *temp;

  current = first_msg;
  while (current != NULL) {
    printf("%s\n",current->string);
    printf("&");
    temp = current;
    current = current -> next;
    free (temp);
  }
  first_msg = NULL;
  last_msg  = NULL;
}

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.

--
 /*******************************************************************/
 /*  "Eritis sicut Deus, scientes  *  bvickers at bonnie.ics.uci.edu   */
 /*   bonum et malum"              *  ---------------------------   */
 /*******************************************************************/



More information about the Comp.lang.c mailing list