Using the code below I need to implement it such that p_poly has only one term of any degree and contains no terms with zero coefficients. I have tried to implement a temporary variable to no avail and was wondering if anyone else had an idea or possibly lead me to a solution.

status read_poly(polynomial * const p_poly)
  int coef;
  int degree;

  if (init_list(p_poly) == ERROR) {
    return ERROR;

  do {
    printf("\tEnter coefficient, degree (0,0 when done): ");
    scanf(" %d,%d", &coef, ┬░ree);

    if (coef != 0 && term_insert(p_poly, coef, degree) == ERROR) {
      return ERROR;
   while (coef != 0 || degree != 0);

  return OK;

Your scanf should be scanf("%d,%d", &coef, &degree)

There is a logical error with your while loop condition. You say you want non-zero coefficients and any degree, but exit if both are zero?

while (coef == 0 || !(coef == 0 && degree == 0));

If coef == 0 just loop again.
If coef == 0 and degree == 0 then exit while loop. But you want to loop if that is not true, so just negate it with !.