Imprimir estrella ('*') diamante en C con bucles anidados?

Quiero poder imprimir un diamante como este cuando el usuario ingresa 5 para el diamante. Pero también funcionará para cualquier valor que sea impar y mayor que 0.

Tengo un código que funciona para hacer un rombo para la entrada del usuario de 5, pero no funcionará para todas las entradas de números impares.

<code> half = (size/2)+1;

 for (a=1; a <=  half ; a++) /*top to mid row of diamond*/
   {
     for (b=a; b<half;b++)
       {
     printf(" ");
       }
     for (c= size -2* a; c <=  half; c++)
       {
     printf("*");
       } 
      printf("\n");
   }
 for (a = 1; a < half;a++)
   {
     for (b = a; b>0;b--)
       {
     printf(" ");
       }
     for (c = size-2*a; c >0 ;c--)
       {
     printf("*");
       }
     printf("\n");
   }


  return 0;
}
</code>

Cualquier ayuda será enormemente apreciada, gracias.

Micro

Respuestas a la pregunta(11)

Su respuesta a la pregunta